2016-10-25 9 views

答えて

17

use strict; 
use warnings; 
my $x; 
my @a = @{ $x }; # error: Can't use an undefined value as an ARRAY reference 

は、と比較してください。起こっていることは、arefがl値のコンテキストで使用されているため、auto-vivifiedが存在することです。

前の例では、r値のコンテキストでarefを直接使用しようとしています。そのため、エラーが発生するのはなぜですか(自動化されないため)。

あなたがfor()を使用するようにテストを簡素化することはできません、あなたはmap()と同じ結果を得るでしょう:

use warnings; 
use strict; 

my $x; 

for (@{ $x }){ 
    print "$_\n"; 
} 

...何も出力します。

my $x; 
my @a = map $_, @{ $x }; 

print ref $x; 

出力:視覚$xは配列リファレンスとして自動vivifiedたことがわかり、あなたがref()機能を使用することができますへ

ARRAY 
+3

をも 'REF($ xは)'表示されますオートバイウィーションが発生しました。 –

+1

@Сухой27ありがとう!私は当時そのことを考えなかった。答えが更新された – stevieb

関連する問題