在旧的Perl代码库中,是这样:
if($ foo =〜“ bar” and“ baz”){
并且有效!如果我用更常见的定界符/代替引号,则它不起作用。有人认识这种语法吗?我找不到任何与绑定运算符一起使用“和”方式的讨论。如果我在第二个“ and”上进行链接,它也可以工作,但是如果我尝试“ and not”,则不起作用。我很惊讶地看到此代码,甚至更惊讶地看到它等效于:
如果($ foo =〜/ bar / && $ foo =〜/ baz /){
这是合法的语法吗?如果是,我在哪里可以找到它的文献记录?还是非常糟糕的形式并且需要重新加工?
if ( $foo =~ "bar" and "baz" )
等效于
if ( ( $foo =~ "bar" ) and "baz" )
由于"baz"
总是返回一个真值,所以上述等价于
if ( $foo =~ "bar" )
例如,
use feature qw( say );
if ( $ARGV[0] =~ "bar" and "baz" ) {
say "match";
} else {
say "no match";
}
if ( $ARGV[0] =~ /bar/ && $ARGV[0] =~ /baz/ ) {
say "match";
} else {
say "no match";
}
$ perl a.pl oooooo
no match
no match
$ perl a.pl ooobarooo
match
no match
$ perl a.pl ooobazooo
no match
no match
$ perl a.pl ooobarbazooo
match
match
我不会称其为“有效”。