if ($line =~ /relay=127\.0\.0\.1/) { my ($id, $to, $status) = (split /\s+/, $line, 10)[5,6,9]; chop($id); $to =~ s/to=<(.*?)>,/$1/; if ( defined $messages{$id}{to} ) { $messages{$id}{to2} = $to; } else { $messages{$id}{to} = $to; } } for my $id (%messages) { no warnings 'uninitialized'; $messages{$id}{from} =~ /\@(\w+\..+)/; print "$messages{$id}{date}\t$id\t$messages{$id}{from}\t$messages{$id}{to}"; if (defined $messages{$id}{to2} ) { print ", $messages{$id}{to2}"; } print "\n"; }