perl – __PACKAGE __-> {foo}是什么意思?
发布时间:2020-12-15 21:20:05 所属栏目:大数据 来源:网络整理
导读:我在旧代码中重构一个perl模块,这是模块的一个功能: sub get_user { my $user = __PACKAGE__-{user}; if (!defined $user) { # more code __PACKAGE__-{user} = $user; } return $user;} 该模块使用严格的编译。并且没有定义包变量。 __PACKAGE __- {user}
我在旧代码中重构一个perl模块,这是模块的一个功能:
sub get_user { my $user = __PACKAGE__->{user}; if (!defined $user) { # more code __PACKAGE__->{user} = $user; } return $user; } 该模块使用严格的编译。并且没有定义包变量。 解决方法
__PACKAGE__是当前包的名称;您的代码正在使用它作为符号散列引用。所以如果你的包是foo,它设置$ foo :: foo {‘user’}。这是一件奇怪的事情;我怀疑这可能是一个错误。
因为它是一个象征性的参考,它不应该被严格的允许。然而,似乎至少当当前的包具有多个部分(例如Foo :: Bar,而不仅仅是Foo)时。不过,我不会依赖这个错误。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |