gpt4 book ai didi

perl - 将字符串转换为数字 “Argument isn’ t 数字错误”

转载 作者:行者123 更新时间:2023-12-01 23:11:20 26 4
gpt4 key购买 nike

我正在解析制表符分隔的文件。有几列没有被识别为数字,即使它们显然是数字。当我尝试总结这些值时,会显示错误:Argument ""97""isn't numeric in addition (+) 并且 Perl 返回 0。

我试过使用 Scalar::Util qw(looks_like_number); 但它产生了相同的结果“0”。还有什么我可以尝试的吗?

代码如下:

open my $out_fh, '>', $final_variants or die qq{Unable to open "$final_variants" for output: $!};

open my $in_fh, '<', $tsv_file_new
or die qq{Unable to open "$tsv_file_new" for input: $!};

while ( <$in_fh> ) {

my @fields = split;

my $forward_reference = $fields[67];
my $reverse_reference = $fields[68];
my $forward_variant_reads = $fields[77];
my $reverse_variant_reads = $fields[78];

my $total_reads = (looks_like_number($forward_reference))
+ (looks_like_number($reverse_reference))
+ (looks_like_number($forward_variant_reads))
+ (looks_like_number($reverse_variant_reads));

my $current_final_line = $headerline . "\t"
. $forward_reference . "\t"
. $reverse_reference . "\t"
. $forward_variant_reads . "\t"
. $reverse_variant_reads . "\t"
. $total_reads . "\t";

print $out_fh $current_final_line, "\n";
}

最佳答案

您的错误消息已经说明了这一点:参数“97”不是数字。当 number 实际上是一个被引号 (") 包围的字符串 时,就会发生这种情况, 如下所示:

my $num = '"42"';
my $sum = $num + 1;

这给出:

Argument ""42"" isn't numeric in addition (+) at...

尝试去掉您的数字中的引号:

$num =~ s/"//g;

关于perl - 将字符串转换为数字 “Argument isn’ t 数字错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108769/

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