Perl入門   No.21


6. これだけ知ってて、こんなことが出来る
 
6.1 テキストファイルをCSV形式に変換
 
CSV形式のファイルとは、EXCELでも読み込める引用符付きのファイルです。例えば、
 
 test.csv
"2003.01.13","祝日","成人の日"
"2003.02.14","祝日","建国記念の日"
 
という具合に、"",""と区切られたものです。このファイルは、文字列を構造的に区切りやすいので、伝言板のデータであるとか、データベースのデータファイル形式として用いられます。しかし、入力の時はいちいち引用符を入れていたのでは、めんどうくさい作業となります。そこで、
2003.01.13
祝日
成人の日

2003.02.14
祝日
建国記念の日
 
とまあ、こんなふうに入れる方が楽でしょう。そこでこのように入力したテキストをCSV形式に変えるプログラムを作りましょう。
#!/usr/bin/perl

open(TEXT,"test.txt");
while(<TEXT>){
   if(/^\n/){
    print "\n";
  }
  else{
  print "\"";
  chop;
  print;
  print "\",";
  }
}
print "\n";
close(TEXT);
 
 
出力結果をファイルに保存したければ、コマンドライン上からリダイレクション(>)を使います。
%perl csv.pl >test.csv
 
ただし、上記のプログラムでは行末にコンマが残ってしまいます。行末だけコンマのないものにするプログラムを考えてください。
 
6.2 その逆さま
 
逆にCSV形式のファイルを改行コードで区切られたテキストに変えます。
#!/usr/bin/perl

open(TEXT,"test.txt");
while(<TEXT>){
   if(/"(.*)","(.*)","(.*)"/){
    $date = $1;
    $type = $2;
    $ivent = $3;
   }
    print $date."\n";
    print $type."\n";
    print $ivent."\n";
    print "\n";
}
close(TEXT);