有没有根据字节大小转换成KB,MB,GB的函数?

有没有根据字节大小转换成KB,MB,GB的函数?

就像du -sb <dir> VS du -sh <dir>这样
给定一个数字序列(字节数)$bytes
smartbytes($bytes[, $float])    小数点后面几位数字
自己动手算,
$bytes / 1024  --K
$bytes / 1024 * 1024 --M
...
自己写一个吧。
找不到找现成的就只能自己动手了……
你能搜到一篇文章叫"将linux下的ls命令用perl移植到windows下"

而ls命令正好有这功能:>

是这么写的:
sub tpe{
my $bb=shift;
my $type;
if($bb<1048576 && $bb>=1024){
$type=(eval "$bb/1024")."K";
}elsif($bb>=1048576 && $bb<1073741824){
$type=(eval "$bb/(1024*1024)")."M";
}elsif($bb>=1073741824){
$type=(eval "$bb/(1024*1024*1024)")."G";
}else {
$type=$bb."B";
}
$type =~ s;^(\d+\.\d{2})(\d+)([B|K|M|G]);$1$3;g; #$type now is a array.
scalar($type);
}
use Number::Format qw(:subs);
$formatted = format_bytes($number, $precision);