Perl chdir 以 glob 模式失败
Perl chdir fails with a glob pattern
我正在尝试在我的 perl 脚本中执行 cd。我正在使用以下命令:
chdir "/home/test/test1/test2/perl*";
perl*
值实际上是 perl_0122_2044
,但这个值可能会有所不同。
上面的 chdir
命令没有对路径执行 cd
。我做错了什么吗?
chdir expects a path, not a wildcard. Use glob 扩展通配符:
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 由 raku https://modules.raku.org/dist/IO::Glob
中的模块处理
我正在尝试在我的 perl 脚本中执行 cd。我正在使用以下命令:
chdir "/home/test/test1/test2/perl*";
perl*
值实际上是 perl_0122_2044
,但这个值可能会有所不同。
上面的 chdir
命令没有对路径执行 cd
。我做错了什么吗?
chdir expects a path, not a wildcard. Use glob 扩展通配符:
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 由 raku https://modules.raku.org/dist/IO::Glob
中的模块处理