まくまくPerlノート
配列へのリファレンス、デリファレンス
2008-02-28

配列へのリファレンスを取得するには、配列変数の前に \ を付けます。リファレンスはスカラ値です。

my @arr = (1, 2, 3);
my $ref = \@arr;    # 配列のリファレンスを取得

# 無名配列を作る場合
my $ref = [1, 2, 3];

配列へのリファレンスをデリファレンスするには、以下のいずれかの形式で行います。

# 配列全体の参照
@$ref
@{$ref}

# 各要素の参照
$ref->[0]   # デリファレンス(方法 1) ※一番分かりやすい
$$ref[0]    # デリファレンス(方法 2)
${$ref}[0]  # デリファレンス(方法 3)

ただし、リファレンスとして配列やハッシュの要素が指定されている場合は、リファレンスを囲む括弧 {} を省略することはできません。

@{$ref_of_array[0]}    # この場合の {} は省略できない

これを、仮に {} を省略して @$ref_of_array[0] と書いてしまうと、@{$ref_of_array}[0] とみなされてしまいます。

2008-02-28