gpt4 book ai didi

perl - 如果产生错误,我如何跳过一行/迭代?

转载 作者:行者123 更新时间:2023-12-03 07:48:07 25 4
gpt4 key购买 nike

我正在使用 Bio::PopGen::PopStats计算 Wright's Fst对于我在输入文件中读取的每一行。我的输入文件包含大约 500,000 行,因此我计算了 500,000 次这个统计数据,如下所示:

use Bio::PopGen::PopStats;
my $stats = Bio::PopGen::PopStats->new();
my $fst = $stats->Fst(\@populations,\@markernames);
push(@fsts, $fst);

我将每个 Fst 值保存在数组 @fsts 中因为最后我使用所有 500,000 Fsts 来计算一些汇总统计数据。

如果模块无法计算 500,000 行之一的 Fst,则整个 Perl 脚本将停止并给出错误消息,通常是这样的:
Illegal division by zero at /usr/share/perl5/Bio/PopGen/PopStats.pm line 292, <READ2> line 10878.

我希望我的程序给出这个错误消息,但不要停止,而是跳过这一行(在 @fsts 数组中为这一行不放置任何内容),并完成其余 500,000 行。有什么建议么?

最佳答案

您可以使用 eval 捕获 fatal error :

my $fst;
eval {
$fst = $stats->Fst(\@populations,\@markernames);
push @fsts, $fst;
1;
} or warn $@;

关于perl - 如果产生错误,我如何跳过一行/迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9064640/

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