use warnings; use strict; while (<>) { if (/Relay.access.denied/) { while (<>) { /(\d+)\s+(\S+)/ or last; print "$2\n"; } } }