use warnings; use strict; $/ = '#end trans#'; my $user = 'me'; while (my $lines = ){ if ($lines =~ /user=$user\b/){ my @matches = $lines =~ /\bblah\b/g; print "$user - ", join ' ', @matches, "\n"; } } __DATA__ 2005/06/06 12:00:00 user=me func(<- start blah blah blah blah blah blah ) #end trans# <- end 2005/06/06 12:01:00 user=other func( blah blah blah blah blah ) #end trans#