my $last = ''; while (my $line = <$fh>) { if ( $last =~ m/USB\d*::0x[0-9a-fA-F::]+0x[0-9a-fA-F]+::[0-9a-fA-F]+INSTR$/ and $line =~ m/USB\d*::0x[0-9a-fA-F::]+0x[0-9a-fA-F]+::[0-9a-fA-F]+INSTR$/) { print "$last$line"; } $last = $line; } #### my $content = do{local $/;<$fh>}; while ($content =~ /((?:USB\d*::0x[0-9a-fA-F::]+0x[0-9a-fA-F]+::[0-9a-fA-F]+INSTR\n){2})/g) { print $1; }