如何解决Perl chdir失败,并带有全局模式
我正在尝试在我的perl脚本中执行cd。我正在使用以下命令:
chdir "/home/test/test1/test2/perl*";
perl*
的值实际上是perl_0122_2044
,但该值可能会有所不同。
上面的chdir
命令未对路径执行cd
。我在做错什么吗?
解决方法
chdir
在参数中不接受*
和其他扩展字符。为此,请使用glob
或类似的名称来提取单个目录,然后提取chdir
。例如,这会将目录更改为找到的第一个/home/test/test1/test2/perl*
:
$dir = (glob "/home/test/test1/test2/perl*")[0];
# only change dir if any dir was found:
if (-d $dir) {
# fail if cannot change dir (or,even better,use autodie):
chdir $dir or die "Could not change to $dir: $!";
}
,
my ($dir) = glob "/home/test/test1/test2/perl*";
chdir $dir or die "$dir: $!";
如果有多个扩展,将使用第一个。
, 中的模块处理