use strict; use warnings; use Tie::File; opendir IN, 'Output'; # name of folder where files are my @in = grep { /\.txt$/ } readdir IN; # read all files in dir closedir IN; for my $in (@in) { open IN, '<', "Output/$in" || next; tie my @array, 'Tie::File', $in or die "Could not open file '$in' $!"; $array[0] = 'Header1, Header2, Header3, etc etc.'; untie @array; }