[perl][sort]
複数の値をからめたソート
use strict; use warnings; use Data::Dumper; my @hoge = ( { age => 19, no => 1, area => 20 }, { age => 12, no => 2, area => 88 }, { age => 10, no => 3, area => 10 }, { age => 12, no => 3, area => 10 }, { age => 17, no => 5, area => 11 }, { age => 13, no => 6, area => 13 }, { age => 16, no => 7, area => 12 }, { age => 11, no => 8, area => 15 }, { age => 11, no => 9, area => 15 }, ); print join("\t", qw/area no age/ ) . "\n"; for my $hoge ( sort { $b->{area} <=> $a->{area} or $a->{no} <=> $b->{no} or $a->{age} <=> $b->{age} } @hoge ) { print join("\t", $hoge->{area}, $hoge->{no}, $hoge->{age} ) . "\n"; }
こっちの方がみやすいか。
area no age 88 2 12 20 1 19 15 8 11 15 9 11 13 6 13 12 7 16 11 5 17 10 3 10 10 3 12