为什么Unix命令在Perl脚本中不起作用?

Zeb*_*cks 2 unix perl

我想从某个模式开始提取文本文件的一部分并将其存储在另一个文件中.我的Perl脚本将一个参数作为输入文本文件.到目前为止,我有:

my $INPUT = $ARGV[0];
my $LINES_TO_DUMP = 4000;
my $startline = `egrep -n "^PATTERN" $INPUT | head -1 | cut -f1 -d:`;

# THIS LINE DOESN'T WORK
system("tail +$startline $INPUT | head -$LINES_TO_DUMP > extracted.txt");
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,它会"卡住"运行第二个命令(egrep命令工作,并存储正确的数字).我在终端中运行命令以确保它有效.

出了什么问题?

raz*_*zor 5

你可能$startline有一个换行符,因为它是从命令输出中消耗的.您应该确认这一点,然后chomp()在通话$startline前使用system().

这是建议的chompperldoc.

  • 这似乎应该是一个评论. (3认同)
  • 也不要在回答中"回复"评论.只需编辑它,以便新读者将其视为良好的信息来源.只需发表评论,例如"感谢@hunter提出的建议,我将其添加到答案中",提出评论并继续前进.通过这种方式,您将创建一个高质量的答案,半年后,有些新人会立即理解. (3认同)