use warnings; use strict; my $str = 'k4J37P420342 3256 10021545 May 18 23:07 MAILER-DAEMON (Deferred: Connection reset by somdomain.com.) '; my ($code, $addr) = $str =~ /(\S+)(?:[^)]*)\)\s*<([^>]+)/; print "$code $addr\n" if defined $addr;