in reply to $_ getting clobbered by inner loop.

Note too that the 3 argument version of open is safer and clearer than the two argument version in your sample code:

open TEST_FILE, '<', $_ or die ...

Perhaps also of interest is that the while print loop can be rewritten:

print while <TEST_FILE>;

or even:

print <TEST_FILE>;

although I presume you have provided sample code and such trivial stuff doesn't apply in your real application.

For various reasons rewriting your for loop header as:

for my $filename (@test_files) {

is a good thing to do. The immediate reason is that it fixes your problem (as others have mentioned already). It also better documents your code and may facilitate debugging it. You do of course need to use $filename in place of $_ as appropriate.


Perl is environmentally friendly - it saves trees