解析perl中查找调用的第一个条目?

时间:2012-01-10 16:09:51

标签: perl bash find

我需要在Perl脚本中从find命令获取示例文件文件,然后再创建另一个系统调用。出于某种原因,当我从脚本中调用它时,find命令会卡住。这是我需要做的:

my $search_dir = "/something/like/this/??/??/??";
# the triple '??' are needed here
my $cmd = "find $search_dir -name \"\*.$var1.token1.$var2.ext\" | head -n 1";
my $first_example_file = `$cmd`; chomp $first_example_file;

当我通过Perl运行时它会卡住,它永远不会完成执行命令,而构建的$ cmd会立即运行,如果我复制+粘贴它并在我的bash终端中运行。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

尝试使用File::Find perl模块查找文件。如果您想在bash's find中使用perl,则可能需要在命令中使用$(..)

我不在perl ...只是想帮忙。

<强>更新

正如Rohaq的评论中所述,您也可以使用File::Find::Rule

答案 1 :(得分:1)

我打算使用globbing(shell元字符扩展)。但不管怎样,试着把命令砍掉。它没有管道吗?没有??怎么样?在路径名?如果你在前面添加'echo'(“echo find ...”)会发生什么?还挂?然后你可以在perl -d下调试它 - 调试器; perldoc perldebug是你的朋友。