in reply to Re^4: Batch processing of files
in thread Batch processing of files

However, when include this code in the entire script, only the first 3 out of 4 files are processed. Is there a reason for this behaviour?

No. It's not the code. I see four possibilities:


After

my @files = <substituent_R*.txt>;
add
use Data::Dumper; $Data::Dumper::Useqq = 1; warn(Dumper(\@files));

Do you see the four files? Are there any weird characters?


If you didn't answered yes and no, post the output and continue.

After

my $avg = $sum / $cnt;
add
warn("Average=$avg\n");

Do you see four averages? Are any of them very near 1?


If you didn't answered yes and no, post the output and continue.

After every line, add

warn(__LINE__, " for $fn_in\n");

Post your output.

Replies are listed 'Best First'.
Re^6: Batch processing of files
by austinby (Initiate) on Feb 12, 2010 at 14:26 UTC

    Thanks. All the files were in the @files array, evidenced from a print statement, and none of the $avg was close to one. Closing the file handle after the foreach loop did the trick. I'll still experiment with the Data::Dumper module you suggested.

    Thanks!

    BTW, does anyone know how to create arrays dynamically? e.g.

    @files = ("a1.txt","a2.txt","a3.txt",...."an.txt");#n=50 foreach $file (@files) { my ($h1, $t1) = split(/\./,$file); #use the value of $h1 to create a new array @{$h1}; #to create arrays @a1, @a2, @a3, ....@an }