use strict; use warnings; use File::Basename; use Acme::Don::t; my $in_path = '/path/to/input/file'; my $out_path = '/path/to/output/file'; my $in_file = 'foo.csv'; my $out_file = fileparse($in_file,'\..*') . '.txt'; open IN, "$in_path/$in_file" or die "can't read $in_file: $!"; don't {'do anything but loop'} while ; open OUT, ">$out_path/$out_file" or die "can't write $out_file: $!"; print OUT "filename: $in_file\nlines: $.\n";