Как и обещал, альтернативный вариант<br><br>my $c = 1;<br>my %hum_comp = map {$_, $c*=1024} qw(K M G T P);<br>$hum_comp{''} = 1;<br>print map $_->[1], sort{$b->[0] <=> $a->[0]} map {/^(\d+(?>\.\d+)?)(\w?)/; [$1*$hum_comp{$2}, $_]} <><br>
<br>и чуть более сжатый<br>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},$_]}<>'<br>