Как и обещал, альтернативный вариант

my $c = 1;
my %hum_comp = map {$_, $c*=1024} qw(K M G T P);
$hum_comp{''} = 1;
print map $_->[1], sort{$b->[0] <=> $a->[0]} map {/^(\d+(?>\.\d+)?)(\w?)/;
[$1*$hum_comp{$2}, $_]} <>

и чуть более сжатый
du -h | perl -e'%hc=map{$_,$a=$a?$a*1024:1}qw(K M G T);print map
$_->[1],sort{$b->[0]<=>$a->[0]}map{/^(\d+(?>\.\d+)?)(\w?)/;[$1*$hc{$2},$_]}<>'
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить