http://www.perlmonks.org?node_id=396192


in reply to Strange behaviour of an array

There are three possible problems here.

Possibility 1

In the first case you have:

push( @{ $GeneralInfo{$Ref2General->[$i_gdes]} }, $2); . . . push @{ $GeneralInfo{$Ref2General->[$i_gdes]} }, $NotNamed;

In the second you have:

$GeneralInfo{$Ref2General->[$i_gnoi]}=$2;

Is this related to the problem? Also, you're not checking $2 here (as you are with the previous case).

Possibility 2

You are relying on $_ being available and unchanged too deep in your code. Consider using this construct:

while (my $line = <INPUT>) { . . . }

Possibility 3

Similarly, you are expecting values captured in one regex ($1, $2, etc.) to be available after another regex is evalualted. Immediately after the regex, you should either use the captured data straight away, or store the values for later use.

The inclusion of test data and output results is usually helpful.

Regards,

PN5