我运行VMware的脚本,它会中途再失败,以下错误并退出:如何忽略异常,并继续脚本运行
Can't use an undefined value as an ARRAY reference at test.pl line 49
。
这是运行在具有〜4000个虚拟机的vCetner库存上。所以我希望脚本忽略这些错误并继续运行,直到完成。目前脚本在上述错误之后没有任何输出。
这是我的代码,它给了我上面的错误。其中,该错误出现,我粘贴只有几行字:
foreach my $vm_mo_ref (@{ $host_view->vm })
{
print $vm_mo_ref."\n";
}
这是我所做忽略错误:
foreach my $vm_mo_ref (@{ $host_view->vm })
{
if (defined $vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
和
foreach my $vm_mo_ref (@{ $host_view->vm })
{
if (exists $vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
和
foreach my $vm_mo_ref (@{ $host_view->vm })
{
if ($vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
and
foreach my $vm_mo_ref (@{ $host_view->vm })
{
if (ref($vm_mo_ref) eq "ARRAY")
{
print $vm_mo_ref."\n";
}
}
和
foreach my $vm_mo_ref (@{ $host_view->vm })
{
if (ref($vm_mo_ref) eq "ManagedObjectReference")
{
print $vm_mo_ref."\n";
}
}
然而,没有以上五种方法用“如果”条件正在和我的脚本仍然失败/与前面提到的错误退出。
顺便说一下,ManagedObjectReference
是Vmware的具体参考。
你能帮我解决这个错误,并继续处理脚本的其余部分。 谢谢。
你用作数组ref的东西是'$ host_view-> vm'。这是你需要检查循环之前的事情。 – Mat
太棒了。请把答案写在答案部分,以便我可以接受。非常感谢您的快速回复。 – slayedbylucifer
也许你应该检查值的原因是未定义的。这就是警告,你知道。 – TLP