【问题标题】:perl command runs indefinitelyperl 命令无限期运行
【发布时间】: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()

标签: perl wildcard unlink


【解决方案1】:

作为一个不错的网民:

unlink glob("${home_dir}/${month}_???_???.{OUT,DAT}");

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2013-07-18
    • 2014-02-15
    • 2013-04-16
    • 2022-11-09
    • 2013-11-11
    相关资源
    最近更新 更多