Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将外部文件行存储为标量变量,并在PERL中以某种条件循环?_Perl - Fatal编程技术网

是否可以将外部文件行存储为标量变量,并在PERL中以某种条件循环?

是否可以将外部文件行存储为标量变量,并在PERL中以某种条件循环?,perl,Perl,下面的代码运行良好,并打印出包含单词“Street”的行。我想知道是否有另一种方法可以不使用特殊变量$\。 例如,将每一行放入增量标量变量,并针对相同的条件循环每一行。我是perl的新手,因此听起来可能很愚蠢,很抱歉给您添麻烦。 非常感谢您的建议,谢谢 use strict; use warnings; use utf8; open(fh1,"sample.file"); while(<fh1>){ print if /Street/ ; } close fh1; 使用

下面的代码运行良好,并打印出包含单词“Street”的行。我想知道是否有另一种方法可以不使用特殊变量$\。 例如,将每一行放入增量标量变量,并针对相同的条件循环每一行。我是perl的新手,因此听起来可能很愚蠢,很抱歉给您添麻烦。 非常感谢您的建议,谢谢

use strict;
use warnings;
use utf8;

open(fh1,"sample.file");

while(<fh1>){
    print if /Street/ ;
}
close fh1;
使用严格;
使用警告;
使用utf8;
打开(fh1,“sample.file”);
while(){
打印if/Street/;
}
关闭fh1;
如果您想避免使用
$,可以使用
while(my$line=)
,尽管我无法想象您为什么要这样做

如果要将其读入数组

@array = <$fh1>;


对于一个大文件,将整个文件读入一个数组将耗费时间和内存,而不是一次只消耗一行输入。

您所说的增量标量变量
到底是什么意思?一个数组?假设我放置@list=,然后我想用条件打印$list[0]到$list[$#list]。是的,这是一个数组。很好,非常感谢,我只是想知道基本上我来自另一个编程背景,我试图联系它是否可以用另一种方式来完成,我的大脑可以很容易地接受它。再次感谢您的及时回复。@pradeep6kumar使用ForEachThank可能更好。谢谢,我也在尝试更多的想法。
my @array = <fh1>;
for(my $i =0; $i<$#array; $i++){
     print $array[$i] if $array[$i] =~ /Street/
}