if ( $2 && $3 && $3 != 0 )
Perl 中的上述逻辑是什么?我从未在其他语言中看到过这样的 if 条件。$2 和 $3 只是捕获一些正则表达式的组。
或这个:
if ( $2 && $2 == 0 && $3 && $3 == 0 )
if ( $2 && $3 && $3 != 0 )
Perl 中的上述逻辑是什么?我从未在其他语言中看到过这样的 if 条件。$2 和 $3 只是捕获一些正则表达式的组。
或这个:
if ( $2 && $2 == 0 && $3 && $3 == 0 )
在 Perl 中,如果变量已定义、非零(*请参阅 amon 注释中的特殊情况)且非空,则其计算结果为 true。最后的条件是多余的,因为$3
不能评估为真并且为 0。
该代码只是确保捕获组 2 和 3 捕获了某些内容。
另请参阅:如何在 Perl 中使用布尔变量?
if ( $2 && $3 && $3 != 0 )
意思是,如果 $2 和 $3 被成功捕获并且 $3 不是 0
所以$line = 'a b c 4';
$line =~ m/(\d)\s?(\d)\s?(\d)/;
# $1 is 4, $2 is undef, $3 is undef. Your if statement would fail.
$line2 = '3 4 5 6';
$line2 =~ m/(\d)\s?(\d)\s?(\d)/;
# $1 = 3, $2 = 4, $3 = 5. Your if statement is successfull.
if ( $2 && $2 == 0 && $3 && $3 == 0 )
Just 意思相同,但第 2 和第 3 匹配需要为 0。
$line = '5 0 0 4';
$line2 =~ m/(\d)\s?(\d)\s?(\d)/;
# $1 = 5, $2 = 0, $3 = 0. Your if statement is successfull.