http://www.perlmonks.org?node_id=1001704


in reply to Re^5: sort hash of arrays of arrays
in thread sort hash of arrays of arrays

It's awesome, thank you!
How does it work? Specifically, why does it need the for keys %hash part? How could I sort on the innermost elements (e.g. [26, 27, 28] to get [28, 27, 26]) using the same method?
Thanks very much.

Replies are listed 'Best First'.
Re^7: sort hash of arrays of arrays
by BrowserUk (Patriarch) on Oct 31, 2012 at 16:44 UTC
    How does it work? Specifically, why does it need the "for keys %hash" part?

    Because, as I said, you need to do one sort for each key.

    (I don't know how better to explain it than that. )

    How could I sort on the innermost elements (e.g. [26, 27, 28] to get [28, 27, 26]) using the same method?

    Now you need to do one sort for each sub array, for each key, so you need nested loops:

    for my $key ( keys %hash ) { for my $aref ( @{ $hash{ $key } } ) { @{ $aref } = sort { $b <=> $a } @{ $aref }; } } ;; pp \%hash;; { 1 => [[28, 27, 26], [18, 17, 16], [8, 7, 6], [3, 2, 1]], 2 => [[29, 28, 27], [19, 18, 17], [9, 8, 7], [4, 3, 2]], 3 => [[30, 29, 28], [20, 19, 18], [10, 9, 8], [5, 4, 3]], 4 => [[31, 30, 29], [21, 20, 19], [11, 10, 9], [6, 5, 4]], }

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    RIP Neil Armstrong