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: $!";
}
,

chdir需要路径,而不是通配符。使用glob扩展通配符:

my ($dir) = glob "/home/test/test1/test2/perl*";
chdir $dir or die "$dir: $!";

如果有多个扩展,将使用第一个。

,

同样,glob由raku https://modules.raku.org/dist/IO::Glob

中的模块处理

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...