我基本上计算了&#34;独特的_errors&#34; &#34; all_errors&#34;(第一个数组) ( 2nd_array )迭代地,第一个数组由字符串组成,这些字符串是第二个数组的子字符串.....每当子字符串在< strong>第一个数组与第二个数组中的字符串匹配,count递增,子串的总出现次数在另一个文件中打印。 这就是我的所作所为:
foreach $x (@uniq_errors) {
$y = quotemeta "$x";
foreach (@all_errors) {
if( $_ =~ m/$y/) {
$count++;
}
}
print REPORT "\n\n $x OCCURENCES=$count";
$count = 0;
}
例如:
(uniq_errors)数组1 :qw(错误1,错误2,错误3)
(all_errors)array 2 :qw(错误1发生在端口abc的时间123ns,错误2发生在端口xyz的时间456ns,错误1发生在端口xyz的时间345ns )
输出应为:
错误1次出现= 2
错误2次发生= 1
以上代码是否正确??
答案 0 :(得分:1)
您正在使用qw()
创建数组:
<强> QW / STRING / 强>
使用,评估从STRING中提取的单词列表 嵌入的空格作为单词分隔符。
使用Data::Dumper
可以检查生成的数组:
my @uniq_errors = qw (error 1 , error 2 , error 3);
use Data::Dumper;
print Dumper(\@uniq_errors);
输出:
$VAR1 = [
'error',
'1',
',',
'error',
'2',
',',
'error',
'3'
];
启用use warnings;
也会给你一个提示:
Possible attempt to separate words with commas at ...
解决方案是在不使用qw
的情况下声明您的数组:
my @uniq_errors = ('error 1', 'error 2', 'error 3');