спасибо, прям то, что я хотел, а что значит конструкция map {$_, $c*=1024} qw(K M G T P); ?
use Smart::Comments;
my $c = 1;
my %hum_comp = map {$_, $c*=1024} qw(K M G T P);
$hum_comp{''} = 1;
### %hum_comp
показывает 
### %hum_comp: {
###              '' => 1,
###              G => 1073741824,
###              K => 1024,
###              M => 1048576,
###              P => '1.12589990684262e+015',
###              T => '1099511627776'
###            }
конструкция, конечно интересная, но по-моему это усложнение
29.09.2011, 02:31, "Denis Evdokimov" <[email protected]>:
Как и обещал, альтернативный вариант

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
--
Nikolay Mishin
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить