perl – __PACKAGE __-> {foo}是什么意思?

前端之家收集整理的这篇文章主要介绍了perl – __PACKAGE __-> {foo}是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在旧代码中重构一个perl模块,这是模块的一个功能
sub get_user {
    my $user = __PACKAGE__->{user};
    if (!defined $user) {
       # more code
       __PACKAGE__->{user} = $user;
    }
    return $user;
}

该模块使用严格的编译。并且没有定义包变量。
__PACKAGE __-> {user}是什么意思?

解决方法

__PACKAGE__是当前包的名称;您的代码正在使用它作为符号散列引用。所以如果你的包是foo,它设置$ foo :: foo {‘user’}。这是一件奇怪的事情;我怀疑这可能是一个错误

因为它是一个象征性的参考,它不应该被严格的允许。然而,似乎至少当当前的包具有多个部分(例如Foo :: Bar,而不仅仅是Foo)时。不过,我不会依赖这个错误

猜你在找的Perl相关文章