Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Generating Hash-of-List using map?

by LanX (Canon)
on Sep 23, 2013 at 21:12 UTC ( #1055387=note: print w/ replies, xml ) Need Help??


in reply to Re: Generating Hash-of-List using map?
in thread Generating Hash-of-List using map?

I have the suspicion that this only works with sorted input while the "cheating propsosals" always work...

DB<148> %hash=() DB<149> @CELLS => ("A-1", "A-2", "A-3", "A-4", "B-5", "B-6", "C-7", "C-8", "A-9") DB<150> %hash = map { /^([^-]*)-(.*)$/; if( $1 eq ($a//'-') ) { push + @$b, $2; () } else { ( $a = $1 => $b = [ $2 ] ) } } @CELLS; => ("B", [5, 6], "C", [7, 8], "A", [9])

oops, indeed! ;-)

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re^2: Generating Hash-of-List using map?
Download Code
Re^3: Generating Hash-of-List using map?
by hdb (Parson) on Sep 24, 2013 at 06:17 UTC

    Oh, #@%$"!

    I admit defeat. A sort is probably not what the OP specified. One could build a full temporary hash in the map but that would be cheating as well (also relies on $a not been used for anything else before):

    my %hash = map { /^([^-]*)-(.*)$/; exists $$a{$1}? (push(@{$$a{$1}},$2 +) and ()): ( $1=>$$a{$1}=[$2] ) } @CELLS;

    So there is really no way around first declaring the hash and then filling it. What a pity!

      > So there is really no way around first declaring the hash and then filling it. What a pity!

      O come on! Just "cheat"! ;-)

      DB<113> @CELLS = ("A-1", "B-2", "C-3", "A-4", "B-5", "C-6", "A-7", " +B-8", "C-9") => ("A-1", "B-2", "C-3", "A-4", "B-5", "C-6", "A-7", "B-8", "C-9") DB<114> %hash = map { /^([^-]*)-(.*)$/; if( $1 eq ($a//'-') ) { push + @$b, $2; () } else { ( $a = $1 => $b = [ $2 ] ) } } sort @CELLS; => ("A", [1, 4, 7], "B", [2, 5, 8], "C", [3, 6, 9])

      Cheers Rolf

      ( addicted to the Perl Programming Language)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055387]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (20)
As of 2014-07-24 14:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (160 votes), past polls