如果分配后

zle*_*nyk 1 perl if-statement

有人能告诉我这条线在perl中应该做什么:

$result{$key} .= ";" if (exists($result{$key}));
Run Code Online (Sandbox Code Playgroud)

看起来它增加了";" 在密钥结束时,它已经存在,是真的吗?是否与在分配前使用"if"语句不同?

Sob*_*que 5

Perl允许您在之前或之后执行条件语句.

这是为了让你做以下事情:

return unless $configured;
exit if $bored;

print "Debug statement\n" if $debug; 

while ( <STDIN> ) {
    print if m/text/; 
}
Run Code Online (Sandbox Code Playgroud)

所以是的,你是对的 - 这是一个有条件的附加,如果密钥存在,它将在值的末尾加上分号.(正如评论指出的那样-它更改密钥)

它与以下内容没有什么不同:

if ( exists ( $result{$key} ) ) {
    $result{$key} .= ';';
}
Run Code Online (Sandbox Code Playgroud)

通常,这是您使用的样式和可维护性问题.我通常建议避免它,因为它通常会使事情变得不那么清楚.(但并非总是如此 - 请参阅上面的几个例子).

  • OP严格*错误*当他说,*"看起来它增加了";" 在密钥的末尾它已经存在"*因为分号在哈希*值*的末尾添加了. (4认同)