小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

動的に配列の配列を作成

動的に配列の配列を作成

以下は、csvデータを標準入力から読み込んで行と列の2次元配列に格納します。

#!/usr/bin/perl -w
use strict;

# 変数宣言
my (@a, $i, $j);

# 変数初期化
@a = ();

#標準入力からcsvデータを読込み配列@aに格納
while () {
  chomp();
  push(@a, [ split(",") ]);
}

# 配列の配列を取り出す
for $i (0 .. $#a) {
    for $j (0 .. $#{$a[$i]}) {
        print '$a[' . $i . '][' . $j . ']=' . $a[$i][$j] . '   ';
    }
    print "\n";
}
  • chomp関数は、標準入力からデータを読み込むと改行が付加されているので、それを除去。
  • split関数は、標準入力から読み込んだデータが$_に格納されているので、それをカンマでスプリットし無名配列を作成。
  • push関数は、配列@aにsplit関数で作成された無名配列のそのリファレンスを格納しています。
  • 補足:無名配列を大括弧するとそのリファレンススカラー値を返す。