gpt4 book ai didi

perl - 获得用存储单元表示的值的perl方法

转载 作者:行者123 更新时间:2023-12-05 00:33:38 25 4
gpt4 key购买 nike

我正在寻找一种将以下代码简化为单个regexp语句的方法:

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;
}


该代码对值进行评估,该值可以表示为单个数字(字节),数字和KB(千字节)以及兆字节(MB)等。关于如何减少块码的任何想法?

最佳答案

您可以像这样设置哈希:

my %FACTORS = ( 'KB' => 1024, 'MB' => 1024**2, 'GB' => 1024**3 );


然后解析这样的文本:

if ( $current_value =~ /(\d+)(KB|MB|GB)/ ) {
$current_value = $1 * $FACTORS{$2};
}


在您的示例中,正则表达式有一个我不确定您打算使用的 *,因为 *的意思是“零个或多个”,因此 (+\d)(MB)*会匹配 1010MB10MBMB

关于perl - 获得用存储单元表示的值的perl方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com