Perl で、「配列の配列」のデータ構造を作る

Perl では配列は、@array = ('aaa', 'bbb', 'ccc') のように書くが、「配列の配列」のデータ構造を表現するにはどうしたらいいのだうろう?

以下にサンプルコードを示す。$songs という配列の先頭は「$」となっている。その内側も配列なのに (...) ではなくて [...] になっていることに注目してほしい。これは配列の配列を参照で表現するためである。アクセス方法は foreach のところを参考にしてほしい。

#!/usr/bin/perl

my $songs = [
  [
    'S3T-party_people.mp3'  ,
    '3MN-ill_do_my_best.mp3',
    'CU2-gamusha_life.mp3'  ,
    'A3N-kaerimichi.mp3'    ,
  ],
  [
    '4YK-tokyo_zekkei.mp3'              ,
    'BM3-karate.mp3'                    ,
    'DE9-ashita_chikyuu_ga_konogoma.mp3',
    'R3-bright_fantasy.mp3'             ,
  ],
  [
    'IR3-realize.mp3'                        ,
    'MCZ-hakkin_no_yoake.mp3'                ,
    '8AS-itsu_ka_mita_niji_no_sono_shita.mp3',
    'WG3-shoujo_koukyoukyoku.mp3'            ,
  ],
];

my $song_list = $songs->[1]; # 2番目の配列のセットにアクセス

foreach my $song (@$song_list) { # $song_list の前に @ をつける。

  print "$song\n";
}

1;

出力結果は以下の通り。


4YK-tokyo_zekkei.mp3
BM3-karate.mp3
DE9-ashita_chikyuu_ga_konogoma.mp3
R3-bright_fantasy.mp3

広告