http://qs321.pair.com?node_id=689774


in reply to Open in for loop/array structure

As apl says, adding use strict and use warnings is always a good practice.

I am curious about this fragment:

print "$FN[$k]\n"; $filename = <$FN[$k]>; chomp ($filename); $file->open("< $filename") or die("Can't read the source:$!");
The expression <$FN[$k]> reads from the file handle $FN[$k]. Do your files out-02-00.txt, etc. contain a file name or do they contain data? If the latter, I think you want just $filename = $FN[$k];.

Update: The following curiosity has been cleared up by duff below.

The curious part is that my testing shows that $filename is actually being set to $FN[$k] (cygwin-perl 5.8.8). However, this supposedly equivalent code sets $filename to undef:

... $filename = readline($FN[$k]); ...
Update: Some more testing shows that if $f is the path of an existing file, then <$f> returns $f (assuming that $f has not been used as a file handle. Otherwise it returns undef. Ver interesting...