我是Perl的初学者,我需要你的帮助。
我有一个文件,其中包含处理我想要分析的其他文件的结果。我的文件包含以下结果:
default,primary,secondary,copy_directory,forced_copy_flag,always_allow_dump,type_of_dump,full_memory_dump,
d100spuptl25e0,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,1,fault,disallow,
doc1,/del,/dev/null,/ras,1,0,fw-assisted,disallow,
doc2,/dev/lg_dumplv,/dev/sysdumpnull,//ras,1,1,fw,disallow,
doc3,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,fault,fw-assisted,disallow,
doc4,5,fault,7,8,9,10,disallow,
每行的第一个字段是文件的名称;应忽略第一个default
文件:只能处理其他文件。
我想要其中一个值为fault
的文件的名称,以及此类文件的数量。
在本案例中,结果将是:
number of files: 3
File names are:
d100spuptl25e0
doc3
doc4
答案 0 :(得分:1)
尝试自己解决问题非常重要,我真的不应该坚持要求你至少做出一些的努力。但我厌倦了不断强调这一点,今天只是制定解决方案更容易。只是不要指望再次逃脱它!
这将按照您的要求进行
use strict;
use warnings;
use List::Util 'any';
open my $fh, '<', 'myfile.txt' or die $!;
my @files;
while ( <$fh> ) {
next unless /\S/;
chomp;
my ($file, @fields) = split /,/;
next if $file eq 'default';
push @files, $file if any { $_ eq 'fault' } @fields;
}
printf "number of files: %d\n", scalar @files;
print "File names are:\n";
print "$_\n" for @files;
<强>输出强>
number of files: 3
File names are:
d100spuptl25e0
doc3
doc4