perl:迭代地比较2个字符串数组

时间:2014-08-08 10:01:43

标签: perl

我基本上计算了&#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

以上代码是否正确??

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');