我正在寻找一种方法将以下代码片段减少为单个正则表达式语句:
if( $current_value =~ /(\d+)(MB)*/ ){
$current_value = $1 * 1024 * 1024;
}
elsif( $current_value =~ /(\d+)(GB)*/ ){
$current_value = $1 * 1024 * 1024 * 1024;
}
elsif( $current_value =~ /(\d+)(KB)*/ ){
$current_value = $1 * 1024;
}
Run Code Online (Sandbox Code Playgroud)
该代码对可以表示为单个数字(字节)、数字和 KB(千字节)、兆字节(MB)等的值进行评估。如何减少代码块?
use warnings;
use strict;
use Number::Format qw(format_bytes);
print format_bytes(1024), "\n";
print format_bytes(2535116549), "\n";
Run Code Online (Sandbox Code Playgroud)
输出:
1K
2.36G
Run Code Online (Sandbox Code Playgroud)