while(my $s1 = ){ next unless $s1 =~ m#^(\d+/\d+/\d+) (\d+:\d+:\d+) user=(\S+) func\(#; my ($date, $time, $user) = ($1, $2, $3); ... # above variables are available while(my $s2 = ){ last if $s2 =~ /^\) #end trans#/; ... # $s2 is log data } }