以下の内容はhttps://r9.hateblo.jp/entry/20101205/p1より取得しました。


配列内の要素undef自動補完

新しく配列を作成しただけだと、中身はもちろん何もないので要素数0。

use strict;
use warnings;
my @ary;
print scalar(@ary), "\n"; #=> 0

この時に添字[10]には何が入っているかといえば、undefがある。
print $ary[10]; してみると、Use of uninitialized valueの警告が出る。
少なくともあるように見えるが、他の[0]〜[9]に変化はなく、要素数も変わらず0だ。

use strict;
use warnings;
use Data::Dumper;
my @ary;
print Dumper(\@ary), "\n";      #=> $VAR1 = [];

print $ary[10],"\n";
#=> Use of uninitialized value in print at - line 7.
#=> 
print Dumper($ary[10]), "\n";   #=> $VAR1 = undef;
print Dumper(\@ary), "\n";      #=> $VAR1 = [];
print scalar(@ary), "\n";       #=> 0

では、明示的に添字[10]にundefを入れてみる。

use strict;
use warnings;
use Data::Dumper;
my @ary;
print Dumper(\@ary), "\n";      #=> $VAR1 = [];

$ary[10] = undef;   # 明示的にundef代入

print Dumper(\@ary), "\n";
#=> $VAR1 = [
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef,
#=>           undef
#=>         ];
print scalar(@ary), "\n";       #=> 11


このように、配列内の要素undef自動補完は、参照ではなく代入によって行われるようである。終わり。




以上の内容はhttps://r9.hateblo.jp/entry/20101205/p1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14