久しぶりにPerlで書いてみた

 職場の人からGISのテキストデータを編集して欲しいと頼まれ、久しぶりにコーディング。処理としては格納されているx座標とy座標の順番を変えるという単純なものですが、40万行くらいあるので表計算ソフトぢゃ無理。

 最初はRでちゃちゃっと終わらせようかな~と思ってたのですが、もらったテキストが所々にヘッダーのような行が入ってるんですな↓

#Data
#Region 1
#  16
-50852.785000000003 -47664.510000000002
-50837.785000000003 -47627.010000000002
#Region 1
#  15
-51565.279999999999 -46182.625
-51552.779999999999 -46228.875

元々Rは統計用言語なので、こういうのぶっ込むと途中途中のヘッダーを認識してくれなかったりすんので、うまくいきません。ま、強引にすればいくんでしょうけど・・・

ということで、久しぶりにperlで書くことにしてみました。実に4年ぶりの作業。とりあえずActive Perlwーwロwサwクして書き始めようとするものの・・・・完全に忘れてる!!

何$って??@って・・・初歩的なとこの復習を昔自分が書いたコード見ながら勉強。とりあえず、どうにかでけました。正味2時間くらい。思ってたよりさくっといけたです。

#mifの座標のxyを入れ替える。
#途中に文字列あるので、条件分岐の必要あり。
#################################################

open(FILE,”<vector.txt”) or die “open error!!”;
open(OUT,”>>output.mif”) or die “open error”;
while(<FILE>){
    chomp;
    if($_ =~ m/#.*/){
       print OUT “$_
“;
    }
    else{
        @array = split /s+/;
        print OUT “$array[1] $array[0]
“;
    }
}

close FILE;
close OUT;

 ヘッダー要素には頭に#が付くという規則性があるようなので、そこんとこで条件分岐。数秒で処理完了。う~んPerlもなかなか。

 ま、単純な処理だったってのもありますけど。

 改めて思いましたが、やっぱPerlって可読性低いですな。syntactic sugarが豊富っちゅーのもあるんでしょうが、昔自分が書いたコード見ても何書いてるかさっぱりですもの。その点Rは結構厳格というか・・・

 つっても、柔軟なテキスト処理はやっぱPerlの方が上。PerlとRをうまく使い分けてコーディングするのが賢い使い方なんでしょうな。