Perl:使用三元运算符的变量undefined

时间:2014-05-09 18:53:41

标签: perl

# Does not work; after this line, defined( $x ) == false
# my $x = defined( $$_ ) ? $$_ : "4321" for \$ENV{ASDF}
my $x;
# works fine
$x = defined( $$_ ) ? $$_ : "4321" for \$ENV{ASDF}

想法是:为$x提供默认值。

问题是:为什么必须以这种方式预先宣布$x

2 个答案:

答案 0 :(得分:3)

结尾for被翻译成:

for( \$ENV{ASDF} ) {
    my $x = defined( $$_ ) ? $$_ : "4321";
}

从而建立$x的词汇范围。

答案 1 :(得分:2)

该行等同于使用defined or的以下更简单的陈述:

my $x = $ENV{ASDF} // "4321";

至于为什么有人会跳过这么多不必要的箍?不能说。