#プログラム大喜利 出題その(5) 再回答

上記と同じ問題を再回答。

#!/usr/bin/perl

my %hash = ( 'B' => 1, 'K' => 2**10, 'M' => 2**20, 'G' => 2**30, 'T' => 2**40 );

while(<STDIN>) {
	/^\s*([0-9\.]*)([KMGTB])/; $sz = $1 * $hash{$2};
	eval("s/^\\s*[0-9\.]*[KMGTB]/".$sz."/");
	print $_;
}
1;

上記が filter.pl ならば、

$ du -h * | ./filter.pl | sort -n -k 1,1

でいけるはず。