And the clouds parted, and SilverFox said...
>
> Hi all, I'm trying to writing a script that will allow a user to enter a 
> number and that number will be converted into KB,MB or GB depending on the 
> size of the number. Can someone point me in the right direction?
> 
> Example: 
> user enter: 59443
> Script will output: 58M
> 
> SilverFox
> 

Here's a little chunk that should give you about what you're looking
for, up to Tebibytes (2**40 bytes).  Note that I used the "binary"
prefixes[1] (Kibi, Mebi, Gibi, Tebi) as opposed to the base-10 versions
(Kilo, Mega, Giga, Tera).  Feel free to change them if you're so
inclined.  :)

--- Begin Chunk ---

our %ByteCount = (
          B => 1,
        KiB => 2**10,
        MiB => 2**20,
        GiB => 2**30,
        TiB => 2**40
);


sub prettybyte {
    my $bytes = shift;

    foreach my $unit ( qw{ TiB GiB MiB KiB B } ) {
        if ($bytes >= $ByteCount{$unit}) {
            return sprintf("%4.3f $unit", $bytes/$ByteCount{$unit});
        }
    }
}

--- End Chunk ---

HTH[2]-
Brian

[1] http://www.alcyone.com/max/reference/physics/binary.html
        -anyone remember offhand the URL to the /. story on these, btw?

[2] I'm a little rushed at the moment, so I don't have time to fill
in any details of how it works.  Let me know if you want/need an
explanation and I'll be happy to provide one.  :)


  /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
 | Brian Gerard                      Some drink at the fountain of        |
 | First initial + 'lists'          knowledge...others just gargle.       |
 | at technobrat dot com                                                  |
  \______________________________________________________________________/

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to