とある件で、マイクロソフト・エクセル(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の柔軟さが実感できる。

投稿者 sukarabe

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です