Perl chdir因glob模式而失败
我正在尝试用perl脚本制作cd。我正在使用以下命令:Perl chdir因glob模式而失败,perl,directory,glob,chdir,Perl,Directory,Glob,Chdir,我正在尝试用perl脚本制作cd。我正在使用以下命令: chdir "/home/test/test1/test2/perl*"; perl*值实际上是perl_0122_2044,但该值可能会有所不同 上面的chdir命令没有对路径执行cd操作。我做错什么了吗?需要路径,而不是通配符。用于展开通配符: my ($dir) = glob "/home/test/test1/test2/perl*"; chdir $dir or die "$di
chdir "/home/test/test1/test2/perl*";
perl*值实际上是perl_0122_2044,但该值可能会有所不同
上面的chdir命令没有对路径执行cd操作。我做错什么了吗?需要路径,而不是通配符。用于展开通配符:
my ($dir) = glob "/home/test/test1/test2/perl*";
chdir $dir or die "$dir: $!";
如果有多个扩展,将使用第一个扩展。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: $!";
}
类似地,glob由中的模块处理,您怎么知道它不是?你认为会发生什么?我看不出有任何错误。你在用autodie pragma吗?您如何知道它不工作?完整的命令如下:chdir/home/test/test1/test2/perl*;exec cat test.in | grep build | awk'{print\$2}';执行脚本后,它会显示错误:cat:test.in:没有这样的文件或目录您应该把它放在问题中,而不是注释中。检查该错误,主要是查看它尝试的目录:chdir$dir或die无法更改为$dir:$@briandfoy谢谢你的提醒,加上这个和一张额外的支票!