Howdy :)

What you need to do is replace these lines:

if ( defined $messages{$id}{to} ) { $messages{$id}{to2} = $to; } else { $messages{$id}{to} = $to; }
With this:
push @{$messages{$id}{to}}, $to;
This will give you a HOHOA, and will cater for as many recipients as are found.
Run the following sample code to get an idea.
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my %messages; while (my $line = <DATA>) { if ($line =~ /relay=127\.0\.0\.1/) { my ($id, $to, $status) = (split /\s+/, $line, 10)[5,6,9]; chop($id); $to =~ s/to=<(.*?)>,/$1/; push @{$messages{$id}{to}}, $to; } } print Dumper(\%messages) and exit; __DATA__ Nov 16 10:28:51 smtp3 postfix/smtpd[17709]: connect from mailserver.ou +rdomain.gov.au[168.x.x.x] Nov 16 10:28:51 smtp3 postfix/smtpd[17709]: 66AE820809D: client=mailse +rver.ourdomain.gov.au[[168.x.x.x] Nov 16 10:28:51 smtp3 postfix/cleanup[19600]: 66AE820809D: message-id= +<56FE9AD99802CE47AF144E03064331D501F42840@mailserver.gov.au> Nov 16 10:28:51 smtp3 postfix/qmgr[9315]: 66AE820809D: from=<Terry.Pus +er@ourdomain.com>, size=11466, nrcpt=2 (queue active) Nov 16 10:28:51 smtp3 postfix/smtpd[19599]: connect from localhost.loc +aldomain[127.0.0.1] Nov 16 10:28:51 smtp3 postfix/smtpd[17709]: disconnect from mailserver +.ourdomain.gov.au[168.132.65.6] Nov 16 10:28:51 smtp3 postfix/smtpd[19599]: 883822080A4: client=localh +ost.localdomain[127.0.0.1] Nov 16 10:28:51 smtp3 postfix/cleanup[19594]: 883822080A4: message-id= +<56FE9AD99802CE47AF144E03064331D501F42840@mailserver.ourdomain.gov.au +> Nov 16 10:28:51 smtp3 postfix/qmgr[9315]: 883822080A4: from=<Terry.Pus +er@ourdomain.com>, size=11644, nrcpt=2 (queue active) Nov 16 10:28:51 smtp3 postfix/smtp[18745]: 66AE820809D: to=<carols@the +irdomain.com.au>, relay=127.0.0.1[127.0.0.1], delay=0, status=sent (2 +50 Ok: queued as 883822080A4) Nov 16 10:28:51 smtp3 postfix/smtp[18745]: 66AE820809D: to=<daleb@thei +rdomain.com.au>, relay=127.0.0.1[127.0.0.1], delay=0, status=sent (25 +0 Ok: queued as 883822080A4) Nov 16 10:28:51 smtp3 postfix/smtpd[19599]: disconnect from localhost. +localdomain[127.0.0.1] Nov 16 10:28:51 smtp3 postfix/qmgr[9315]: 66AE820809D: removed Nov 16 10:28:52 smtp3 postfix/smtp[19429]: 883822080A4: to=<carols@the +irdomain.com.au>, relay=mailhost.theirdomain.com.au[203.x.x.x], delay +=1, status=sent (250 Message queued) Nov 16 10:28:52 smtp3 postfix/smtp[19429]: 883822080A4: to=<daleb@thei +rdomain.com.au>, relay=mailhost.theirdomain.com.au[203.x.x.x], delay= +1, status=sent (250 Message queued) Nov 16 10:28:52 smtp3 postfix/qmgr[9315]: 883822080A4: removed

Hope this helps,
Darren :)


In reply to Re: Tweaking the mysteries of HoHs and arrays by McDarren
in thread Tweaking the mysteries of HoHs and arrays by billie_t

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.