开发者

Perl equivalent of (Postgre)SQL BETWEEN operator?

Is there such a thing? The equivalent of a <=开发者_如何学运维 expr <= b, or in SQL parlance expr BETWEEN a AND b, where expr is evaluated only once? Or is asking for this just getting silly?


There are a variety of ways to do that in Perl.

if( $a < $x and $x < $b ){ ... }
... if $a < $x and $x < $b;
use 5.10.1;
if( $x ~~ [$a..$b] ){ ... }

given( $x ){
  when( [$a..$b] ){ ... }
}
use 5.11.0; # development branch
given( $x ){
  ... when [$a..$b];
}


you could use Range operator + smart macthing:

if($expr ~~ [$a..$b])


In Perl6, the comparison operators are chainable.

http://perlcabal.org/syn/S03.html#Chained_comparisons:

Perl 6 supports the natural extension to the comparison operators, allowing multiple operands:

if 1 < $a < 100 { say "Good, you picked a number *between* 1 and 100." }
if 3 < $roll <= 6              { print "High roll" }
if 1 <= $roll1 == $roll2 <= 6  { print "Doubles!" }

In Perl 5, they are not.


I do not think they correspond exactly, but take a look at the Range Operators.


I think this is your only bet.

$x = expr;

if ($a < $x && $x < $b) {
  # stuff
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜