读取数据并将数据复制到哈希表并计算出现次数的Perl脚本

bhmjp9jg  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(134)
while (<$SomeInputfile>) {
    $errors = "";
    if ($val_func->($_)) {
        print $SomeOutFile $_;
    } else {
        print $SomeErrorFile "Error on line $line_num: $errors\n$_\n";

无论何时出现任何错误,它都会以上述格式打印到某个错误文件中。现在我想要实现的是获得错误类型和发生次数,这意味着我需要获得错误作为哈希表键沿着计数,无论何时识别出任何错误,都需要增加特定类型错误的计数,但我是Perl新手,所以无法理解我如何实现这一点。真的很感谢帮助。
$errors包含如下错误类型列表等数据:

Unknown CONTACT-RECORD-TYPE
Contact RECORD-LENGTH
Contact ACTION-CODE
Contact ACTION-CODE
.....
fjaof16o

fjaof16o1#

下面是一种提示性的回答:
您可以根据自己的要求进行更改。
我认为,您将在每个(while)循环上获取错误,并通过将错误的第二个字符串作为键将它们存储在哈希中。

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my %ERRORS;

foreach my $error ("Unknown CONTACT-RECORD-TYPE", "Contact RECORD-LENGTH", "Contact ACTION-CODE", "Contact ACTION-CODE"){
    my @whole_error = split / /, $error;
    $ERRORS{ $whole_error[1] }++;
}

print "ERRORS:\n".Dumper(\%ERRORS);

结果:

ERRORS:
$VAR1 = {
          'RECORD-LENGTH' => 1,
          'ACTION-CODE' => 2,
          'CONTACT-RECORD-TYPE' => 1
        };

相关问题