我運行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