将文本MB / GB转换为值

时间:2014-05-29 18:03:54

标签: perl

我有一个包含文件大小的变量:

my $tx = "41.4 MB";

my $tx = "34.4 GB";

如何将其转换为KB值。因此,如果tx包含MB然后是* 1024,如果tx包含GB,那么* 1024 * 1024?

1 个答案:

答案 0 :(得分:2)

您需要分离并测试单位。

use strict;
use warnings;

sub size_to_kb {
    my $size = shift;
    my ($num, $units) = split ' ', $size;

    if ($units eq 'MB') {
        $num *= 1024;
    } elsif ($units eq 'GB') {
        $num *= 1024 ** 2;
    } elsif ($units ne 'KB') {
        die "Unrecognized units: $units"
    }

    return "$num KB";
}

print size_to_kb("41.4 MB"), "\n";

print size_to_kb("34.4 GB"), "\n";

输出:

42393.6 KB
36071014.4 KB

< /手持>