爲什麼下面的代碼:關於不一致的行爲「不能用一個未定義的值作爲數組引用」
use strict;
use warnings;
no warnings 'uninitialized';
use Data::Dumper;
my $user;
my @data = @{$user->{ENTERPRISE}}; # Error on this line
print Dumper($user), qq{Done!\n};
拋出錯誤「Can't use an undefined value as an ARRAY reference
」,而下面的代碼:
use strict;
use warnings;
no warnings 'uninitialized';
use Data::Dumper;
my $user;
foreach my $enterprise(@{$user->{ENTERPRISES}}) {
print qq{Enterprise:}, $enterprise;
}
print Dumper($user), qq{Done!\n};
不扔東西,而是返回:
$VAR1 = {
'ENTERPRISES' => []
};
Done!
雙方都有問題的鱈魚在他們中,但只有一個正在拋出錯誤。
可能的答案:Perl's autovivification?
我在這裏在正確的軌道上?感謝您的輸入。
你究竟在做什麼?事實上,你已經關閉了警告,這應該是一個非常好的警告,它不是一個好主意。 – Sobrique
我只是想弄清楚Perl在一個地方拋出錯誤而不是在另一個地方拋出相同的代碼。第一個代碼塊來自舊代碼,拋出錯誤,必須修復,而第二個代碼塊是更新的代碼,我擔心也需要修復,但我猜並不是因爲它沒有拋出我看到的錯誤以往。 – Morrowind789