http://qs321.pair.com?node_id=11118466


in reply to Push array to hash

Note that you have two very similar statements in the OPed code that are doing very different things:

my %lag_detail = ...; # single instance of this hash in scope ... foreach my $line (...) ) { if (...) { if (...) ) { # push ref. to OLD instance of a hash to anon. array in an +other hash. push( @{ $self->{"lags"} }, \%lag_detail ); } # change certain values in hash, but hash LOCATION does not ch +ange. %lag_detail = ( "lagid" => $lag, "lagdesc" => $4, "operationst +ate" => $3, "adminstate" => $2 ); } } if (...) { # create NEW instance of a hash in independent scope. # this instance is TOTALLY INDEPENDENT of any other created in thi +s scope. my %port_detail = (...); # push ref. to NEW instance to anon. array in another hash. push @{ $lag_detail{"ports"} }, \%port_detail; } }
References be tricky.


Give a man a fish:  <%-{-{-{-<