File I/O overwrite array variables?

File I/O overwrite array variables?

am 14.11.2007 08:40:37 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");
}
}


}

Re: File I/O overwrite array variables?

am 14.11.2007 08:48:54 von Peter Makholm

"jamesrwagner@gmail.com" writes:

> foreach(@localizations) {

Here you make $_ an alias to each element of @localizations

> my $localization = $_;
> open INPUT, "freseqs" . $_ . $fold . $minSup ;
>
> while() {

Here you modify $_ which, as we remember, is an alias into
@localizations. So it is quite expected that you in later iterationes
over @localizations sees these modified values.

> chomp;

> }

//Makholm