第 3 回 - Perl 入門(1)

[10/12, 2009 H.Aman]
67x27(1669bytes)   67x27(1669bytes) 【課題 3】

例題 3

CSV(カンマ区切り形式)のデータを読込み, その中の左から 3 列目と 2 列目だけを表示する Perl スクリプト csv32.pl を作りなさい.
ただし,表示は "3列目-2列目" のかたちとする.

(実行例)

     $ perl csv32.pl foo.csv
     9-14
     92-53
     .....
     34-93
     37-88

解答例

     @contents = <>;
     foreach $line (@contents){
        @data = split(/,/, $line);
        print $data[2], "-", $data[1], "\n";
     }
     

解説

split 演算子
以前,シェルスクリプトを学習していく中で cut コマンドを使用した.
split 演算子は同様(それ以上)の機能を Perl 上で実現するものである.
つまり,与えられた文字列を所定の文字(パターン)で分断する. その分断の結果は配列に格納できる.

構文は以下の通りである.


     @結果配列 = split(/区切りパターン/, 分断元の文字列);

上の解答例では
     @data = split(/,/, $line);
となっているため,変数 $line の内容を "," を区切りとしてばらばらに分断し, その結果を順番に配列 @data へ格納している.

例えば,

     @data = split(/,/, "aaa,bbb,ccc");
ならば,
  • $data[0] = "aaa";
  • $data[1] = "bbb";
  • $data[2] = "ccc";
という具合いに処理される.