[Templates] print "n" nicely if n = bytes

Jonathan Rockway jon@jrock.us
Mon, 18 Sep 2006 11:30:33 -0500


BTW, there is a module to do this; Number::Bytes::Human.

Randal L. Schwartz wrote:
> From an upcoming magazine article (http://www.stonehenge.com/merlyn/UnixReview/col67.html):
> 
>     [% MACRO nice(n) BLOCK;
>       IF n >= 1073741824 * 9.995;
>         n / 1073741824 | format('%dG');
>       ELSIF n >= 1073741824;
>         n / 1073741824 | format('%.2gG');
>       ELSIF n >= 1048576 * 9.995;
>         n / 1048576 | format('%dM');
>       ELSIF n >= 1048576;
>         n / 1048576 | format('%.2gM');
>       ELSIF n >= 1024 * 9.995;
>         n / 1024 | format('%dK');
>       ELSIF n >= 1024;
>         n / 1024 | format('%.2gK');
>       ELSE;
>         n;
>       END;
>     END %]