Perl: Human size in color
I use human_size()
a lot in Perl, and sometimes it's nice to have a colored version. Here is a quick colorized version:
sub human_size_c {
my $size = shift();
if (!defined($size)) { return undef; }
if ($size >= (1024**5) * 0.98) { $size = sprintf("\e[38;5;167m%.1fP\e[0m", $size / 1024**5); }
elsif ($size >= (1024**4) * 0.98) { $size = sprintf("\e[38;5;105m%.1fT\e[0m", $size / 1024**4); }
elsif ($size >= (1024**3) * 0.98) { $size = sprintf("\e[38;5;45m%.1fG\e[0m" , $size / 1024**3); }
elsif ($size >= (1024**2) * 0.98) { $size = sprintf("\e[38;5;47m%.1fM\e[0m" , $size / 1024**2); }
elsif ($size >= 1024) { $size = sprintf("\e[38;5;226m%.1fK\e[0m", $size / 1024); }
elsif ($size >= 0) { $size = sprintf("\e[38;5;160m%dB\e[0m" , $size); }
return $size;
}
See also: Original human_size()