#!/usr/bin/perl use Data::Dumper; open (Q,"-|" , "cat mailqout" ); my $ref_tomailq= []; my $coutner = 0; my $temp_qid; while() { # Ignore the banners and totals next if m{ Q-ID }ix ; # Ignore any completed jobs #next if m{ ^ .{10,20} \s \(job \s completed\) }x; if( m{ ^\w+ }ix ) { my @ar_line = split(/\s+/,$_); my $num_char = length($ar_line[0]); if ( $num_char > "0") { #print "$ar_line[$counter] $ar_line[-1]"; $ref_tomailq->[$counter]->{$ar_line[0]}->{"from"} = $ar_line[-1]; $temp_qid = $ar_line[0]; $counter++; } } else { my @ar_line = split(/\s+/, $_); chomp(@ar_line); if ( $ar_line[1] =~ /\(Deferred:/) { $ref_tomailq->[$counter-1]->{$temp_qid}->{"status"} = "deffered"; } elsif ($ar_line[1] =~ /<{1}\w+>?/) { #print "@ar_line\n"; $ref_tomailq->[$counter-1]->{$temp_qid}->{"to"} = $ar_line[1] } } } print Dumper($ref_tomailq);