Как уже упоминали другие, в Perl5 (пока) нет цепных сравнений.
Однако, если вы анализируете "a use strict;
use warnings;
use 5.010;
my ($a, $b, $c) = (10, 20, 30);
say 'Its true!' if comparison( $a, '<', $b, '<=', $c );
sub comparison {
my $left = shift;
while (my $cmp = shift) {
my $right = shift;
compare( $cmp, $left, $right ) or return;
$left = $right;
}
return 1;
}
sub compare {
my $op = shift;
given ($op) {
when ( '<' ) { return $_[0] < $_[1] }
when ( '<=' ) { return $_[0] <= $_[1] }
default { die "Invalid comparison operator" }
}
}
Это только элементарный пример (т. Е. Не полный и без проверки ошибок), но я думаю, вы поняли идею.
И вы можете найти что-то подобное уже на CPAN
. Что-то вроде Parse::RPN
может быть полезным строительным блоком.
Теперь, если вы задаетесь вопросом о том, как буквально разобрать a < b <= c
, тогда это еще один котелок с рыбой!
/ I3az /