in reply to How to store this value in Hash ?

use Data::Dumper; @ar=([1,1],[1,2],[3,5],[6,7]); map {test($_->[0],$_->[1])} @ar; sub test { my ($k,$val)=@_; if (exists $hash{$k}) { $hash{$k} .= ','.$val ; } else { $hash{$k}=$val; } } print Dumper(\%hash);

Output:

$VAR1 = { '6' => 7, '1' => '1,2', '3' => 5 };

Replies are listed 'Best First'.
Re^2: How to store this value in Hash ?
by manav (Scribe) on Mar 21, 2005 at 13:03 UTC
    There's two possible and different ways to do this.
    push @{$fruits{$a}},$b
    will create a hash-of-arrays where each hash element references an array.
    $fruits{$a} .= ','.$b ;
    will just concatenate all values($b) for a particular key ($a).
    The selection of one of these depends entirely on what is to be done with the hash after it has been populated. For computational purposes, dealing with a hash-of-arrays is (IMHO) easier than doing a series of splits on a value which was constructed by concatenating...
    The hash-of-arrays is easier to iterate through, whereas if you just need to print to output, concatenating might be a better option.

    Manav