1

下面的代码可以正常工作并打印出那些包含单词“Street”的行。我想知道是否有另一种方法可以在不使用特殊变量 $_ 的情况下做同样的事情。例如,将每一行放入一个增量标量变量中,并为相同的条件循环每一行。我是 perl 的新手,因此听起来很愚蠢,很抱歉给您带来麻烦。非常感谢任何建议,谢谢。

use strict;
use warnings;
use utf8;

open(fh1,"sample.file");

while(<fh1>){
    print if /Street/ ;
}
close fh1;
4

1 回答 1

2

while(my $line = <fh1>)如果您想避免使用,您可以使用,$_但我无法想象您为什么要这样做。

如果要将其读入数组,

@array = <$fh1>;

然后在此之后,您可以访问单个元素$array[0]... $array[N]

my @array = <fh1>;
for(my $i =0; $i<$#array; $i++){
     print $array[$i] if $array[$i] =~ /Street/
}

对于大文件,与一次消耗一行输入相比,将整个文件读入数组将耗费时间和内存。

于 2013-03-12T09:29:11.497 回答