不是 Perl 中的 HASH 引用

Not a HASH reference in Perl

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

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

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

Experimental values on scalar is now forbidden at ./CMDBcertificateCheck.pl line 266. Type of arg 1 to values must be hash or array (not hash element) at ./CMDBcertificateCheck.pl line 266, near "})"

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

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

Not a HASH reference

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

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

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

你能帮我把$Body变量的内容放到数组里吗?

您可以使用 @{} 取消引用数组。我认为没有必要在这里使用 values

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