in reply to need to sort array of hash
$type 1227601.pl use strict; use warnings; use Data::Dumper; my $ArrayofHash = [ { 'TaskA' => { 'maruti' => '20', 'honda' => '25', 'zen' => '25', 'hyundai' => '35', 'ford' => '22', 'toyota' => '11' } }, { 'TaskB' => { 'maruti' => '11', 'honda' => '22', 'zen' => '33', 'hyundai' => '33', 'ford' => '24', 'toyota' => '16' } }, { 'TaskC' => { 'maruti' => '12', 'honda' => '22', 'zen' => '33', 'hyundai' => '44', 'ford' => '55', 'toyota' => '66' } } ]; my $sorted = [ map {$_->[1]} sort {$b->[0] <=> $a->[0]} #map {(my $h) = values %$_; [$h->{hyundai}, $_]} map {[(values %$_)[0]{hyundai}, $_]} @$ArrayofHash ]; print Dumper($sorted); $perl 1227601.pl $VAR1 = [ { 'TaskC' => { 'zen' => '33', 'toyota' => '66', 'maruti' => '12', 'hyundai' => '44', 'honda' => '22', 'ford' => '55' } }, { 'TaskA' => { 'ford' => '22', 'toyota' => '11', 'maruti' => '20', 'hyundai' => '35', 'honda' => '25', 'zen' => '25' } }, { 'TaskB' => { 'ford' => '24', 'honda' => '22', 'hyundai' => '33', 'maruti' => '11', 'toyota' => '16', 'zen' => '33' } } ]; $
UPDATE: Modified code to simplify dereference. Note: Using the first (and only) element of values avoids the problem with not knowing the name of the key.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: need to sort array of hash
by dsheroh (Monsignor) on Dec 23, 2018 at 11:54 UTC | |
by BillKSmith (Monsignor) on Dec 24, 2018 at 02:31 UTC |