不是 Perl 中的 HASH 引用

mde*_*dev 4 perl

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

这条线路目前引起了问题。我有一个编译错误。

my @IDs = values($Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'});
Run Code Online (Sandbox Code Playgroud)

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

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

my @IDs = values(%{$Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'}});
Run Code Online (Sandbox Code Playgroud)

不是 HASH 参考

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

print Dumper($Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'});
Run Code Online (Sandbox Code Playgroud)

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

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

too*_*lic 5

您可以使用@{}. 我认为没有必要在此处使用

my @IDs = @{ $Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'} };
Run Code Online (Sandbox Code Playgroud)