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


in reply to How to assign an array to a value in hash?

my %new_hash; my $some_key1 = 1234; my @some_array1 = qw/Name1 Email1 Age1/; $new_hash{$some_key1} = [@some_array1]; my $some_key2 = 1235; my @some_array2 = qw/Name2 Email2 Age2/; $new_hash{$some_key2} = [@some_array2]; for ( keys %new_hash ) { my @value_array = @{$new_hash{$_}}; print "Key is $_ and Second element of array is $value_array[1]\n" +; }

You should read perlreftut, perllol, perlref, and perldsc... it'll take you a couple hours, but it will really help your understanding of references.


Dave

Replies are listed 'Best First'.
Re^2: How to assign an array to a value in hash?
by deMize (Monk) on Jul 08, 2009 at 21:46 UTC
    I know this is old, but the @value_array in the for-loop doesn't need to be created.

    I'm sure there's a lot more that could be cleaned up to make this closer to a one-liner (just looking at it), but I figured I'd update the most important part, due to efficiency issues with creating temporary variables in a loop.

    You can just reference an array's value like: $new_hash{$key}[0]

    Note: The example uses $_ instead of $key and instead of choosing the second element in the array (1), I've replaced with the first element (0).
Re^2: How to assign an array to a value in hash?
by Anonymous Monk on Aug 27, 2009 at 08:06 UTC
    This hits the key point.