in reply to Processing multiple files
Generally, your code is OK, but I would like to point out some things which can be improved.
#declare the filehandeles outside the foreach loop
Why? You can write less code (e.g. open my $filehandle, ...) and (if you declare it inside the loop) Perl will close the filehandle automatically right after current iteration of the block finishes executing.
For simple matching of directory contents diamond operator (glob) can serve using smaller code:
my @files = <*.txt>;
- without any need to open or close any directories.
opendir (DIR, $dir) or die $!;
my @textFiles = grep /\.txt/, readdir DIR;
By the way, you can open just "." instead of using Cwd. "." means "current directory" in modern operating systems.
This can be done in one operation: (my $text_file_out = $text_file) =~ s/\.txt$/_new.txt/;. Another option: my $text_file_out = $text_file =~ s/\.txt$/_new.txt/r; (/r modifier is available since Perl 5.14, see Regexp Quote Like Operators).
my $text_file_out = $text_file;
$text_file_out =~ s/\.txt//;
$text_file_out = $text_file_out . '_new.txt';
Sorry if my advice was wrong.