use warnings; use strict; open my $fh, '>', 'outfile3.txt' or die "can't open file: $!"; open my $fh2, '<', 'file1.txt' or die "can't open file: $!"; while ( defined( my $line = <$fh2> ) ) { if ( $line =~ m{^(?.+?)\s+?.*?$}){ print {$fh} $+{matched}, $/; } } close $fh2 or die "can't close file: $!"; close $fh or die "can't close file: $!";