【问题标题】:Not a HASH reference in Perl不是 Perl 中的 HASH 引用
【发布时间】:2021-09-08 03:51:38
【问题描述】:

我正在尝试修复一些不再适用于 Perl 新版本的旧代码。不幸的是,我还没有用 Perl 编写过代码。

此行当前导致问题。我有一个编译错误。

my @IDs = values($Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'});

现在禁止在标量上使用实验值 ./CMDBcertificateCheck.pl 第 266 行。arg 1 到值的类型必须是 ./CMDBcertificateCheck.pl 行中的哈希或数组(不是哈希元素) 266,靠近“})”

我试图通过取消引用 $Body 来修复它,但现在不接受初始化我的数组 @IDs。

my @IDs = values(%{$Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'}});

不是 HASH 引用

如果我转储它,这里是 $Body 的内容。

print Dumper($Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'});

$VAR1 = [ '646', '650', '2178', '2179' ];

您能帮我将$Body 变量的内容放入数组中吗?

【问题讨论】:

    标签: perl


    【解决方案1】:

    您可以使用@{} 取消对数组的引用。我认为这里不需要使用values

    my @IDs = @{ $Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'} };
    

    【讨论】:

    • 对于 Perl >= 5.24,您可以使用后缀解引用:my @IDs = $Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'}->@*;
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多