in reply to Scalar value @array better written as

For Scalar value @fields1[1] better written as $fields1[1], change @fields1[1] to $fields1[1].

Failed to open "./input.txt" for writing: No such file or directory comes from your attempt to open a file that doesn't exist for reading. Maybe you want to skip that directory?

for my $subdir ( sort @subdirs ) { chdir($dir); ... my $in_fh1; if (!open $in_fh1, '<', $infile1) { goto NEXT if $!{ENOENT}; die qq{Failed to open "$infile1" for reading: $!}; } ... NEXT: chdir('..'); }