如何以多个语句为条件调用后置语句?

Tre*_*ree 1 perl

$df{key} =10 ; return ; if $result == 10 ;
Run Code Online (Sandbox Code Playgroud)

给了我一个错误.我怎样才能做到这一点?

Zai*_*aid 9

后声明形式if仅适用于单个陈述.您必须在条件之后将多个语句括在一个块中,if条件本身需要括在括号中:

if ( $result == 10 ) {

    $df{key} = 10;
    return;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,可以将两个语句与后语句条件组合.这里的想法是通过执行布尔评估将两个语句合二为一.

但是,这通常不是一个好主意,因为它可能会短路并且无法达到您的预期,例如$df{key} = 0:

$df{key} = 10 and return if $result == 10;
Run Code Online (Sandbox Code Playgroud)

来自perlsyn:

在Perl中,定义范围的语句序列称为块

...通常,块由大括号(也称为大括号)分隔.我们将这个语法结构称为BLOCK.

以下复合语句可用于控制流程:

if (EXPR) BLOCK

if (EXPR) BLOCK else BLOCK

if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK