本文へスキップ
BecomeCoder

Perlコース · 第8章 これからのPerl · レッスン27

リファレンス ― 複雑なデータ構造を作る

ローカル実施

導入

配列ハッシュを「入れ子」にしたい――たとえば「ハッシュの値が配列」のようなデータを作りたいことがあります。それを可能にするのがリファレンス(参照)です。

説明

リファレンスは「配列やハッシュそのものを指す1つのスカラ値」です。\@array\%hash で作り、[ ](無名配列)・{ }(無名ハッシュ)で直接書くこともできます。中身は矢印 -> でたどります。

use strict;
use warnings;

# ハッシュの値が配列リファレンス
my %team = (
    red  => ["Alice", "Bob"],
    blue => ["Carol", "Dave"],
);

print $team{red}[0], "\n";          # Alice
push @{ $team{blue} }, "Eve";       # blue チームに追加

# 配列の各要素がハッシュリファレンス
my @users = (
    { name => "Taro", age => 20 },
    { name => "Hana", age => 25 },
);
for my $u (@users) {
    print "$u->{name} ($u->{age})\n";
}

リファレンスを使うと、JSON のような入れ子データも自然に表現できます。Perl で本格的なプログラムを書くときの必須知識です。

(リファレンス/デリファレンスの実挙動は、このコースの学習用エンジンでは対象外です。手元の perl で試してください。)