小编min*_*_he的帖子

为什么undef变量变成没有定义的{}?

我正在研究Webmin的源代码

($wuser) = grep { $_->{'name'} eq $in{'user'} } &acl::list_users();

如果我们$in{'user'}像这样传递?user=notexist,变量$wuser将是undef,不是吗?

抽象代码描述了下面发生的情况。

# $wuser is undef now.
#die Dumper($wuser);
if($wuser){die 'not die here';}
        if ($wuser->{'pass'} eq 'x') {
                #never reach here.
                die 'not die in branch 1';
        }
        elsif ($wuser->{'pass'} eq '*LK*' ||
               $wuser->{'pass'} =~ /^\!/) {
                #never reach here too.
                die 'not die in branch 2';
        }
if($wuser){die 'so....why die here '.Dumper($wuser);}
# $wuser is {} now.
}

Run Code Online (Sandbox Code Playgroud)

所以...什么时候以及如何undef变量变成{}而没有任何定义...

perl

3
推荐指数
1
解决办法
90
查看次数

标签 统计

perl ×1