LoginSignup
3
3

More than 5 years have passed since last update.

【Perl】Perlモジュールのメンバとして配列を持たせたらundefined value as an ARRAY referenceではまった話

Last updated at Posted at 2014-12-03

追記

モジュールのメンバというかハッシュに配列入れた場合ですね。

概要

AAAModule.pm

package AAAModule;

sub new
{
    my $className = shift;

    my %a;

    # 配列を持たせる.
    $a{data_list} = ();

    return bless \%a, $className;
}

sub KorewoYobidasu
{
    my @aaa = ("aaa", "bbb");
    $a{data_list} = ¥@aaa;
}

sub GetDataList
{
    my $obj = shift;
    return @{$obj->{data_list}};
}

return @{$obj->{data_list}};

のところで

Can't use an undefined value as an ARRAY reference at

する。なんでや!わいは怒ったで!!

結論

とかやってたんだけど。

$a{data_list} = ();

では配列のリファレンスが入るのだとばかり思ってたけど、配列リファレンスで初期化する場合は

$a{data_list} = [];

だったというオチ。
このとき無名配列リファレンスなるものを初めて知ったのだった...

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3