File I/O overwrite array variables?

File I/O overwrite array variables?

am 14.11.2007 08:42:15 von jamesrwagner

Hello:

I was basically finding that after a block of code, an array I had
called @localizations was still the same size, but each of the
variables was now being overwritten by an empty string. What I found
on closer inspection was that as I was reading in from the file with
handle INPUT, each line was in turn being stored in the current place
that it was on from the outer foreach loop, until upon termination
when the final line is only a newline storing a n empty string in that
place holder.

The code below


sub indexSequences {

my $fold = shift;
my $minSup = shift;

my @localizations = ("cytoplasmic", "cytoplasmicmembrane",
"extracellular",
"outermembrane", "periplasmic");
my %containsHash;

foreach(@localizations) {
my $localization = $_;
open INPUT, "freseqs" . $_ . $fold . $minSup ;

while() {
chomp;




}

foreach(@localizations) {
my $alocalization = $_;
print("This is the $alocalization $_\n");
}
}
}
Giving the following output:

This is the localization
This is the localization cytoplasmicmembrane
This is the localization extracellular
This is the localization outermembrane
This is the localization periplasmic
This is the localization
This is the localization
This is the localization extracellular
This is the localization outermembrane
This is the localization periplasmic
This is the localization
This is the localization
This is the localization
This is the localization outermembrane
This is the localization periplasmic
This is the localization
This is the localization
This is the localization
This is the localization
This is the localization periplasmic
This is the localization
This is the localization
This is the localization
This is the localization
This is the localization


Thus in turn the each element of the @localizations array is
overwritten with an empty string. When I comment out the file I/O
lines the problem goes away. (And the chomp makes no difference).

What can be going on the reading in from a file is overwriting
elements of an array?


Thanks very much.