【发布时间】:2013-09-19 04:54:34
【问题描述】:
我有一个 perl 脚本的一部分:
my @filenames = ("${home_dir}${month}_???_???.OUT",
"${home_dir}${month}_???_???.DAt");
foreach my $list (@filenames) {
unlink $list or warn "failed on $list: $!\n";
}
map { unlink(glob($_)) } @filenames;
无论哪种方式,要使用“unlink $list”命令或全局删除命令“map { unlink(glob($_)) }”从主目录删除文件,该命令将无限期运行。
在我看来,"$list" 找不到文件,因为它可能无法正确解释通配符 (???_???)
请问有cmets吗?
【问题讨论】:
-
您是否尝试将
print语句放入循环中以查看它在做什么? -
只需
unlink(@filenames);或unlink(map glob, @filenames);,您就不必遍历文件。 -
嗨,吉姆,当我在循环中放入打印语句时,例如“print $list”,它会列出文件而不解释通配符“?????? "我希望它列出每个满足通配符的文件。
-
您好 Mpapec,非常感谢您的回复。我确实按照您的建议尝试了,但它仍然无限期运行
-
Perl 不是 shell,不会自动扩展通配符。你必须使用
glob()。