且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

散列哈希Perl代码问题

更新时间:2023-02-23 12:05:56

您必须检查QName是否匹配并记住它:

You have to check if the QName is matched and remember it:

#!/usr/bin/perl

use warnings;
use strict;

my %QM;
my $qm = 'MQ_NAME';

open (CHS_OUT, "result.txt");
my $QName;
while (<CHS_OUT>) {
        my ($QUEUE, $QName1) = / ( QUEUE ) \( ( [^)]+ ) /x;

        if ($QName1) {
                $QName=$QName1;
        }
        if ( my ($item, $value)
        = / ( CURDEPTH | MAXDEPTH ) \( ( [^)]+ ) /x )
        {
                $QM{$QName}{$item} = $value;
        }
}

foreach my $Que (sort keys %QM) {
        foreach my $v (keys %{ $QM{$Que} }) {
                print "$Que : $v = $QM{$Que}{$v} \n";
        }
}

输出:

SYSTEM.RETAINED.PUB.QUEUE : CURDEPTH = 2
SYSTEM.RETAINED.PUB.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.EVALUATION.QUEUE : CURDEPTH = 0
SYSTEM.SELECTION.EVALUATION.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.VALIDATION.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.VALIDATION.QUEUE : CURDEPTH = 0