in reply to Re^11: Hash of Arrays or Arrays of arrays? and how proceed?
in thread Hash of Arrays or Arrays of arrays? and how proceed?

I was making a mountain out of a molehill! And I was trying to print the dumper outside the sub in the wrong way.... usyng "my" in the suggested place it's OK

but I've one more question on the result obtained printing the dumper outside the sub

in this environment I've two DB, same file but different fields, the result of the dumper outside is:

my $risultato = SubAcquisisciDatiCampiEsistenti($file,@Databases); print "\n\n\n ################# Stampa dati FUORI SUBROUTINE ##### +##########\n\n\n"; print Dumper($risultato); my $i=0; foreach (@Databases) { print "\n"; print "Il primo campo disponibile del file $file sul Database +$_ e': "; print $risultato->{$_}{next}[$i]; print "\n"; $i+=1; }
$VAR1 = { '6' => { 'next' => [ 'AQ', 'AO' ], 'fields' => [ 'AA,8,U,DE', 'AB,8,U,I', 'AC,14,U,I', 'AD,8,U,DE', 'AE,8,U,DE', 'AF,8,A,DE', 'AG,8,U,DE', 'AH,7,U,I', 'AI,8,U,DE', 'AJ,7,U,I', 'AK,5,A,DE', 'AL,10,A,I', 'AM,2,A,DE', 'AN,14,U,I' ] }, '5' => { 'next' => $VAR1->{'6'}{'next'}, 'fields' => [ 'AA,8,U,DE', 'AB,8,U,I', 'AC,14,U,I', 'AD,8,U,DE', 'AE,8,U,DE', 'AF,8,A,DE', 'AG,8,U,DE', 'AH,7,U,I', 'AI,8,U,DE', 'AJ,7,U,I', 'AK,5,A,DE', 'AL,10,A,I', 'AM,2,A,DE', 'AN,20,U,I', 'AO,20,A,DE,NU', 'AP,10,U,MU' ] } };

Question: Is it correct the line "'next' => $VAR1->{'6'}{'next'}" ? If I got it right, this line is a reference to a reference? And it correctly point to "AQ"?

Replies are listed 'Best First'.
Re^13: Hash of Arrays or Arrays of arrays? and how proceed?
by jethro (Monsignor) on Aug 10, 2011 at 12:43 UTC

    You are right, this is a reference to the same hash as above, i.e. this is not correct. @nextfield has the same problem as @field had, i.e. it is a global variable, not a new one every time. So every next hash entry points to the same hash. Solution:

    Add "my @nextfield;" in the subroutine near the location where "my @field= sort(..." is.

      PERFECT! Now the dumper print:

      ################# Stampa dati FUORI SUBROUTINE ############### $VAR1 = { '6' => { 'next' => [ 'AO' ], 'fields' => [ 'AA,8,U,DE', 'AB,8,U,I', 'AC,14,U,I', 'AD,8,U,DE', 'AE,8,U,DE', 'AF,8,A,DE', 'AG,8,U,DE', 'AH,7,U,I', 'AI,8,U,DE', 'AJ,7,U,I', 'AK,5,A,DE', 'AL,10,A,I', 'AM,2,A,DE', 'AN,14,U,I' ] }, '5' => { 'next' => [ 'AQ' ], 'fields' => [ 'AA,8,U,DE', 'AB,8,U,I', 'AC,14,U,I', 'AD,8,U,DE', 'AE,8,U,DE', 'AF,8,A,DE', 'AG,8,U,DE', 'AH,7,U,I', 'AI,8,U,DE', 'AJ,7,U,I', 'AK,5,A,DE', 'AL,10,A,I', 'AM,2,A,DE', 'AN,20,U,I', 'AO,20,A,DE,NU', 'AP,10,U,MU' ] } }; Il primo campo disponibile del file 905 sul Database 5 e': AQ Il primo campo disponibile del file 905 sul Database 6 e': AO