如何在Perl中对日期进行排序?
my @dates = ( "02/11/2009","20/12/2001","21/11/2010" );
我的数组中有以上日期.我该如何排序这些日期?
我的日期格式是dd / mm / YYYY.
解决方法
@dates = sort { join('',(split '/',$a)[2,1,0]) cmp join('',$b)[2,0]) } @dates;
或使用单独的排序子程序:
sub mysort { join('',0]); } @dates = sort mysort @dates;
更新:一种更有效的方法是Schwartzian变换:
@dates = map $_->[0],sort { $a->[1] cmp $b->[1] } map [ $_,join('',$_)[2,0]) ],@dates;