我正在尝试修复一些不再适用于 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变量的内容放在数组中吗?
您可以使用@{}. 我认为没有必要在此处使用值:
my @IDs = @{ $Body->{'ConfigItemSearchResponse'}->{'ConfigItemIDs'} };
Run Code Online (Sandbox Code Playgroud)