シュワルツ変換
mapやgrepがいまいち使いこなせていなかったけれど少しわかった気がする。
use strict; use warnings; my $date = [ ["2009-02-23", "a"], ["2009-02-23", "b"], ["2009-02-21", "c"], ["2009-02-24", "d"], ["2009-02-23", "e"], ]; ########################################### my @list = map { $_->[0] } @{$date}; my @tmp = sort { $list[$a] cmp $list[$b] } 0..$#list; my @result; push @result, $date->[$_] for @tmp; #print "$_->[0] -- $_->[1]\n" for @result; ########################################### my @rs = map { $_->[0] } sort {$a->[1] cmp $b->[1] } map { [$_, $_->[0]] } @{$date}; print "$_->[0] --> $_->[1]\n" for @rs;