数组 – 使用Perl将文件读入数组

前端之家收集整理的这篇文章主要介绍了数组 – 使用Perl将文件读入数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读取一个文件并将数据存储在名为@lines的数组中.然后,我使用for循环遍历这个数组,并且在我匹配某个值的循环内:
$find = "fever";

if ($_ =~ /$find/) {
    print "$_\n";
    $number++;
    #@lines =
    #print ("there are : " . $number);
}

目前,我正在使用一个带有发热值的标量$find,而不是为每个过滤器执行重复的语句.

我可以传递一个数组进行比较,而不是一个标量关键字?

解决方法

如果您将文件读入列表,它将一次性完成所有操作
@array = <$fh>;  # Reads all lines into array

将其与读取到标量上下文中进行对比

$singleLine = <$fh>;  # Reads just one line

一次读取整个文件可能是一个问题,但是你会得到这个想法.

然后你可以使用grep过滤你的数组.

@filteredArray = grep /fever/,@array;

然后,您可以使用标量获取已过滤行的计数,这会对数组的解释强制标量(即单值)上下文,在这种情况下返回计数.

print scalar @filteredArray;

把它放在一起…

C:\temp>cat test.pl
use strict; use warnings;  # always

my @a=<DATA>;  # Read all lines from __DATA__

my @f = grep /fever/,@a;  # Get just the fevered lines

print "Filtered lines = ",scalar @f;  # Print how many filtered lines we got

__DATA__
abc
fevered
frier
forever
111fever111
abc

C:\temp>test.pl
Filtered lines = 2
C:\temp>

猜你在找的Perl相关文章