北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

undefをリファレンスとして利用できるか

undef は想像以上に柔軟でした。


以下のエラーは知っていたのです。

$ perl -Mstrict
my $hoge = undef;
print join(',', @$hoge);
Can't use an undefined value as an ARRAY reference at - line 2.


でも、以下がwarningすら出ないのは意外。

$ perl -Mstrict
my $hoge = undef;
$hoge->[0] = 'item1';
$hoge->[1] = 'item2';
$hoge->[2] = 'item3';
print join(',', @$hoge);
item1,item2,item3


こっちもOK。

$ perl -Mstrict
my $hoge = undef;
@$hoge = ('item1', 'item2');
print join(',', @$hoge);
item1,item2

代入に関しては、自動的に配列リファレンスを作ってくれるみたいですね。