csvファイルを読んで配列の配列に格納するサブルーチン

たまに使うのでメモ。

#!/usr/bin/perl
# read csv file to array in array

use strict;
use warnings;
use Fatal qw/ open /;

my $csv_file = "./test.csv";
my @csv = &readCsvFile($csv_file);

print $csv[0][0]."\n";
print $csv[1][1]."\n";
print $csv[2][2]."\n";

sub readCsvFile {
    open(IN, $_[0]);
    while(<IN>) {
        chomp;
        push @csv, [ split(/,/) ];
    }
    close(IN);
    return @csv;
}

このようなcsvファイル(test.csv)だと

id001,09000000001,hoge@example.co.jp
id002,09000000002,foo@example.co.jp
id003,09000000003,var@example.co.jp

このように出力される。

[hoge@colinux tmp]$ ./test.pl
id001
09000000002
var@example.co.jp
[hoge@colinux tmp]$