my $pkt_file = ...; my $dat_file = ...; ... open (my $fh_pkt, '<', $pkt_file) or die "ERROR Opening $pkt_file (Error = $!)\n"; ... while (defined(my $line_in = <$fh_pkt>)) { if (my ($pkt) = $line_in =~ m{ \w+ \s+ (\w+) }xmsg) { my $out_file = "${pkt}_tlmval.txt"; open (my $fh_out, '>>', $out_file) or die "ERROR Opening '$out_file' (ERROR = $!)\n"; ... open (my $fh_data, '<', $dat_file) or die "..."; while (defined(my $line_in = <$fh_data>)) { if (my ($foo, $bar) = $line_in =~ m{ \Q$pkt\E \s+ (\w+) \s+ = \s+ (\d+) }xmsg) { print $fh_out "check '$pkt' '$foo' vs '$bar'\n"; } } } }