<$fh_in>; # Skip header print $fh_out $_ while <$fh_in>; #### <$fh_in>; # Skip header { local $/; print { $fh_out } <$fh_in>; } #### use strict; use warnings; use File::Find qw( find ) open(my $fh_out, '>', 'D:\\mergedfile.ktf') or die("Can't create output file \"D:\\mergedfile.ktf\": $!\n"); my $first = 1; find(sub { return if !/\.ktf\z/; print("$File::Find::name\n"); open(my $fh_in, '<', $File::Find::name) or die("Can't open file \"$File::Find::name\": $!\n"); <$fh_in> if !$first; $first = 0; print $fh_out $_ while <$fh_in>; }, '.');