gpt4 book ai didi

arrays - 使用 Perl 将文件读入数组

转载 作者:行者123 更新时间:2023-12-03 21:03:05 25 4
gpt4 key购买 nike

我目前正在读取一个文件并将数据存储在一个名为 @lines 的数组中。 .然后,我使用 for 遍历这个数组循环和循环内我匹配某些值:

$find = "fever";

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

目前,我使用的是标量, $find ,值为 fever而不是为每个过滤器执行重复的语句。

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

最佳答案

如果您将文件读入列表,它将立即获取所有内容

@array = <$fh>;  # Reads all lines into array

将此与阅读标量上下文进行对比
$singleLine = <$fh>;  # Reads just one line

一次读取整个文件可能是一个问题,但你明白了。

那么你可以使用 grep过滤你的数组。
@filteredArray = grep /fever/, @array;

然后您可以使用 scalar 获得过滤后的行数。 ,这会强制对数组的解释使用标量(即单值)上下文,在这种情况下返回一个计数。
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>

关于arrays - 使用 Perl 将文件读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com