chanslor has asked for the wisdom of the Perl Monks concerning the following question:
My goal is the have one hash with output like:p3D8Bj1f007915 user1@domain.com p3D8EF8n007918 user2@domain.com p3D8Bj1f007915 server101@domain.com p3D8EF8n007918 server111@domain.com
So far, the code below only produces two simple hashes that are only uniq by msgid:p3D8Bj1f007915 user1@domain.com sent message from server101@domain.com p3D8EF8n007918 user2@domain.com sent message from server111@domain.com
Thanks for looking!#!/bin/perl open (FH, "/var/log/syslog") ; foreach $lin (<FH>) { chomp($lin) ; next unless $lin !~ /^\s*$/ ; # Gets rid of blank lines if ($lin =~ /sendmail-listen/){ $lin =~ s/<// ; #removes < from the line $lin =~ s/>,// ; #removes > from the line ($a,$b,$c,$d,$e,$msgid,$g)=split(' ',$lin) ; $msgid =~ s/:// ; #print $g,"\n"; #make sure i'm grabbing the to= and the fr +om= for the follow $destname #TO if ($g =~ /^to/){ ($to,$destname)=split('=',$g) ; $destname =~ s/,// ; chomp($destname) ; $to{$msgid} = $destname ; #Two scalar values going into a + hash called $to. } #FROM if ($g =~ /^from/){ ($fr,$fromname)=split('=',$g) ; $fromname =~ s/,// ; chomp($fromname) ; $from{$msgid} = $fromname ; #Two scalar values going into + a hash called $from. } } #ENDS sendmail-listen + + } close ( FH ) ; #print the $to hash foreach $too (sort keys %to) { print "$too $to{$too}\n"; } #print the $from hash foreach $fromm (sort keys %from) { print "$fromm $from{$fromm}\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: sendmail logging combine two hashes
by hdb (Monsignor) on Feb 18, 2015 at 11:23 UTC | |
by chanslor (Acolyte) on Feb 18, 2015 at 12:32 UTC | |
by hdb (Monsignor) on Feb 18, 2015 at 12:38 UTC | |
by chanslor (Acolyte) on Feb 18, 2015 at 14:17 UTC | |
|
Re: sendmail logging combine two hashes
by johngg (Canon) on Feb 18, 2015 at 14:10 UTC | |
by chanslor (Acolyte) on Feb 18, 2015 at 14:24 UTC |