gpt4 book ai didi

perl - 在 perl 中,$self->subname 与 $self->MYPACKAGE::subname 相同吗?

转载 作者:行者123 更新时间:2023-12-02 01:25:42 35 4
gpt4 key购买 nike

在 perl 中,$self->subname$self->MYPACKAGE::subname 相同吗?我是 Pythonizer 的作者还有一段神秘的 Perl 代码,这个代码又来自 CGI.pm。这里的代码使用$self,它是CGI包的一个实例变量,然后调用其中定义的hidden函数,但是代码不仅仅使用$self->hidden(...),它使用$self->CGI::hidden(...)。当我将其转换为 Python 时 self.CGI.hidden(...) 时,我收到一条错误消息,指出 CGI 类没有 CGI 属性。我想知道在这种情况下是否应该创建一个仅指向类实例的 CGI 属性(或者应该指向该类)?无论如何,这到底意味着什么?

package CGI;
...
sub hidden { ... }
...
$self->CGI::hidden(...);

最佳答案

In perl, is $self->subname the same as $self->MYPACKAGE::subname

没有。

$self->subname 将在与对象 $self 关联的符号表中查找 subname,该符号表来自包被 $self 祝福进入。

$self->MYPACKAGE::subname 大部分(但不完全是 - 请参阅下面来自 tobyink 的评论)就像调用 MYPACKAGE::subname($self),即,它不会在与 $self 关联的符号表中查找方法,而是在 MYPACKAGE (及其父包)的符号表中查找。 $self 甚至可能没有方法subname

关于perl - 在 perl 中,$self->subname 与 $self->MYPACKAGE::subname 相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74739190/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com