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

时间:2015-08-11 15:33:14

标签: perl unix

我想从某个模式开始提取文本文件的一部分并将其存储在另一个文件中。我的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");

当我运行我的程序时,它会被卡住'运行第二个命令(egrep命令有效,并存储正确的数字)。我在终端上运行命令以确保它有效。

出了什么问题?

1 个答案:

答案 0 :(得分:5)

您的$startline可能会在其中添加换行符,因为它会从命令输出中消耗掉。您应该确认这一点,然后在chomp()来电之前$startline使用system()

这里是建议的perldoc for chomp