{class_var};"是什么意思-6ren"> {class_var};"是什么意思-我试图搜索这个,但什么也没找到。 我只是好奇为什么有人会在下面的场景中加上星号: $var = *$self->{class_var}; * 在这种情况下有什么作用? 更新 我从 Net::Telne-6ren">
gpt4 book ai didi

perl - 做 "$var = *$self->{class_var};"是什么意思

转载 作者:行者123 更新时间:2023-12-04 02:57:11 25 4
gpt4 key购买 nike

我试图搜索这个,但什么也没找到。

我只是好奇为什么有人会在下面的场景中加上星号:

$var = *$self->{class_var};

* 在这种情况下有什么作用?

更新

我从 Net::Telnet 模块中获取了上述内容,我只是想理解它。

实际代码是:
$s = *$self->{net_telnet};

那么,我想知道 net_telnet 是包名吗?

最佳答案

%main::some_hash = (class_var => 'xyz');

my $self = *main::some_hash;

print *$self->{class_var}, "\n"; # prints 'xyz'

简而言之,这是在符号表中传递对哈希的引用的过时方式。 *之前 $self取消引用 $self 中的值作为一个类型球。 ->{class_var}然后将该 typeglob 取消引用为哈希,并查找 class_var key 。

更新:

向下挖掘类层次结构表明该对象是在 IO::Handle 中创建的。和:
sub new {
my $class = ref($_[0]) || $_[0] || "IO::Handle";
@_ == 1 or croak "usage: new $class";
my $io = gensym;
bless $io, $class;
}
Symbol::gensym返回一个完整的 typeglob,其中 IO主要使用插槽。然而,由于它是一个完整的 typeglob,子模块正在利用这一事实并将其数据存储在各种其他 glob 字段中,即 HASH部分。

关于perl - 做 "$var = *$self->{class_var};"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970620/

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