local *FILE; open FILE, "<", "./$nbdc_dir/$file" or die ... ... #### open my $fh, "<", "./$nbdc_dir/$file" or die ... $nbdc_filehandles[$index] = $fh; #### open $nbdc_filehandles[$index], "<", "./$nbdc_dir/$file" or die ... #### $_ = <$fh>; # OK $_ = < $fh >; # not OK #### my $fh = $nbdc_filehandles[$index]; $_ = <$fh>; # instead of # $_ = <$nbdc_filehandles[$index]>; #### my @nbdc_filehandles; my @nbdc_data; my $index=0; foreach my $file (@nbdc_files) { open my $fh, "<", "./$nbdc_dir/$file" or die "Can't open ./$nbdc_dir/$file"; $nbdc_filehandles[$index] = $fh; #get the first set of data values $_ = <$fh>; $_ = <$fh>; chomp; #get rid of trailing \n $nbdc_data[$index] = [ split(/\t/, $_) ]; # ... $index++; } # then sometime later, to reuse the stored filehandles my $fh = $nbdc_filehandles[$idx]; my $line = <$fh>; # ...