とある件で、マイクロソフト・エクセル(MS Excel)のデータを取り扱うことになった。というか、入力済みのデータがエクセルのフォーマットという次第。ホントはテキスト・データでくれれば嬉しいのだが、どうも、事務関係はどこもかしこもエクセルばかりのようだ。
幸いなことに、Windowsを起動しなくても、Ubuntu上のOpen Office SpreadSheetで開くことができて、さらに、これを CSV (Comma Separated Values) 形式のテキストファイルとして保存できる。こうなれば、あとは楽である。やっぱりテキストファイルが一番だよねえ。
CSV形式のオプションとして、セパレーターが選べる。コンマで区切るよりもタブで区切る方が、ある意味合理的なので、タブで区切って保存する。これって、Tab Separated Values だから、TSVと呼ぶべきだと思うが、これでもやっぱりCSVと称するのだろうか。
それはともかく、あとは1行ずつ読み込んで処理すればよい。UNIXの標準入力から読み、標準出力に書き出すことにした。実際には、リダイレクトすれば良い。こうすると、プログラムは極めて簡単。入出力を書かなくてよいから。
while (<STDIN>) {
chomp; # 行末コードを削除
@data = split /\t/, $_; # $_は1行分のデータ
# 以下、この配列に対する作業を行う。
}
こんな感じ。UNIXの便利さ、Perlの柔軟さが実感できる。