有条件地从这个Perl循环中有条件地“最后”的方法有一个更清洁的方法吗?

不太了解Perl,我一直在通过友好的搜索引擎帮助Perl脚本.

我发现如果条件成立,我需要在设置一个标志的时候突破一个循环:

foreach my $element (@array) {
    if($costlyCondition) {
        $flag = 1;
        last;
    }
}

我知道使用“最后”的更好的方式是这样的:

foreach my $element (@array) {
    last if ($costlyCondition);
}

当然,这意味着,虽然我可以享受句法糖,但我不能把我的旗帜设置在循环中,这意味着我需要在外面再次评估$US $US $条件.

有没有更清洁的方法来做到这一点?

解决方法

你可以使用do {…}块:
do {$flag = 1; last} if $costlyCondition

你可以使用,运算符来加入语句:

$flag = 1,last if $costlyCondition;

您可以使用逻辑&&&操作符:

(($flag = 1) && last) if $costlyCondition;

甚至更低的优先级和:

(($flag = 1) and last) if $costlyCondition;

在一天结束时,没有任何真正的理由去做任何这些.它们都与原始代码完全相同.如果您的原始代码可行,并且清晰可见,请保留原样.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...