我是perl的新手,但我只是想打开一个文件并从中读取一些行。
到目前为止,代码如下所示:
open FILE, "file.txt" or die "can not open file";
while (<FILE>) {
print if ($.== 3..5)
}
但我需要能够改变要获得的线条。所以那些3和5的数字需要是变量。
还有人可以帮助我更好地理解这段代码吗?我想知道什么是$。确切地说,如何将打印命令替换为数组或其他东西以进一步处理这些行?
谢谢!
答案 0 :(得分: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;
答案 1 :(得分:0)
$ perl -E'say for "aa".."ah"' | perl -ne'print if 3..5'
根据documentation使用常量时,使用$.
是不必要的,但是当您使用变量时,您可以明确地提及它:
perl -E'say for "aa".."ah"' | perl -ne'BEGIN{($f,$t) = splice@ARGV,0,2;}print if ($.==$f)..($.==$t)' 3 5