首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl %{$var} vs %$var

Perl %{$var} vs %$var
EN

Stack Overflow用户
提问于 2016-04-26 09:54:17
回答 2查看 1.2K关注 0票数 3

%{$var}%$var有什么区别?我试过这段代码,但有错误:

参考文献中的每一个都是在test.pl第21行进行实验的。引用上每个参数的类型必须是test.pl第21行的不加祝福的hashref或arrayref。

代码语言:javascript
复制
use feature 'say';

%HoH = (
    1 => {
        husband   => "fred",
        pal       => "barney",
    },
    2 => {
        husband   => "george",
        wife      => "jane",
        "his boy" => "elroy",
    },
    3 => {
        husband   => "homer",
        wife      => "marge",
        kid       => "bart",
    },
);

for ($i = 1; $i <= 3; $i++) {
    while ( ($family, $roles) = each %$HoH{$i} ) {
        say "$family: $roles";
    }
}

但这段代码运行良好:

代码语言:javascript
复制
use feature 'say';

%HoH = (
    1 => {
        husband   => "fred",
        pal       => "barney",
    },
    2 => {
        husband   => "george",
        wife      => "jane",
        "his boy" => "elroy",
    },
    3 => {
        husband   => "homer",
        wife      => "marge",
        kid       => "bart",
    },
);

for ($i = 1; $i <= 3; $i++) {
    while ( ($family, $roles) = each %{$HoH{$i}} ) {
        say "$family: $roles";
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-26 09:59:00

使用%$HoH{$i},您可以对$HoH进行哈希引用,而在%{$HoH{$i}}中,您可以对$HoH{$i}进行哈希引用,这正是您想要的.以及,代码上的use strict :-)

票数 7
EN

Stack Overflow用户

发布于 2016-04-26 10:12:24

这是由于解析哈希与订阅哈希的优先级不同。它适用于第二个版本-- %{ $HoH{$i} } --因为您毫不含糊地声明$HoH{$i}查找返回的值本身就是hashref。

%$HoH{$i}被解释为%{ $HoH }{$i} - ie.在表达式$HoH被解释为hashref (它不是)之后,订阅就会发生。%HoH是一个散列,但没有使用$HoH,也就是说它是未定义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36861408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档