if语句perl,如何识别我选择的值

时间:2017-07-17 16:17:48

标签: perl

我想在Perl中写下一个代码,意思是:

  

if a>0 or b>0 or c>0,从这三个中取出最低值并做一些事情。

我对第一部分感到满意​​,我将其编码为

if(a>=0 || b>=0 || c>=0) {
    # but here i don't know how to pick up the lowest value
}

我怎样才能在这三者中找到最低值?

2 个答案:

答案 0 :(得分:3)

您询问了三个值的最小值($min可能为零或负值):

use List::Util qw( any min );

if (any { $_ > 0 } $a, $b, $c) {
   my $min = min $a, $b, $c;
   ...
}

但我认为你的意思是要求三个值的最小正值($min总是大于零):

use List::Util qw( min );

my $min = min grep { $_ > 0 } $a, $b, $c;
if (defined($min)) {
   ...
}

答案 1 :(得分:0)

您可以在通过sort过滤后对值进行数字grep,以确保满足大于零的条件:

my ($x, $y, $z) = qw(5 -1 2);

my ($min) = sort {$a <=> $b} grep {$_ > 0} ($x, $y, $z);

print "$min\n";

输出:

2

注意:OP与自身相矛盾。在开头的句子中,它大于,但在代码中,它是>=。我跟前者去了。