Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl chdir因glob模式而失败_Perl_Directory_Glob_Chdir - Fatal编程技术网

Perl chdir因glob模式而失败

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

我正在尝试用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 "$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谢谢你的提醒,加上这个和一张额外的支票!