2

我对 perl 非常陌生,但我只是想打开一个文件并从中读取一些行。

到目前为止的代码如下所示:

open FILE, "file.txt" or die "can not open file"; 
while (<FILE>) { 
  print if ($.== 3..5)
}

但我需要能够更改要获取的行。所以那些 3 和 5 的数字需要是变量。

也有人可以帮助我更好地理解这段代码吗?我想知道什么美元。确切地说,我将如何将打印命令替换为将其放入数组或其他内容以进一步处理这些行?

谢谢!

4

2 回答 2

3

请注意语法。运行您的示例perl -MO=Deparse,-p表明 perl 将其解释为

(open(FILE, 'file.txt') or die('can not open file'));
while (defined(($_ = <FILE>))) {
((($. == 3) .. 5) and print($_));

幸运的是,范围运算符会执行您希望它执行的操作,因为默认情况下..使用$.(输入行号)。

要使用变量而不是常量,只需使用

print if $. == $x .. $. == $y;
于 2012-07-25T13:53:15.840 回答
0
$ perl -E'say for "aa".."ah"' | perl -ne'print if 3..5'

$.当您根据文档使用常量时,使用是不必要的,但是当您使用变量时,您必须明确提及它:

perl -E'say for "aa".."ah"' | perl -ne'BEGIN{($f,$t) = splice@ARGV,0,2;}print if ($.==$f)..($.==$t)' 3 5
于 2012-07-25T22:02:51.090 回答