Perl 将文本MB/GB转换为值

Perl 将文本MB/GB转换为值,perl,Perl,我有一个包含文件大小的变量: my $tx = "41.4 MB"; 或 如何将其转换为KB值。因此,如果tx包含MB,则为*1024;如果tx包含GB,则为*1024*1024?您需要分离并测试这些单元 use strict; use warnings; sub size_to_kb { my $size = shift; my ($num, $units) = split ' ', $size; if ($units eq 'MB') { $nu

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

my $tx = "41.4 MB";


如何将其转换为KB值。因此,如果tx包含MB,则为*1024;如果tx包含GB,则为*1024*1024?

您需要分离并测试这些单元

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

您似乎已经知道如何解决这个问题,您特别遇到了什么问题?我如何检查perl中是否包含MB或GB?我不能说41.1MB*1024?
42393.6 KB
36071014.4 KB