未完放流

終わりなど無い、有るのは試練だけだ……

Python 全盛時代に shell芸と Perl で乗り切ろうとした話

本屋、ネットなど見る限り、現在では Pythonプログラミング言語の入り口なんだと思います。 私も Python で書かれた プログラムには随分お世話になっております。 私も少しはプラグラムは書くのですが、逆に簡単すぎるものは書きたくないなと思う言語です。

普段は CLI の作業が多く、初歩的な shell芸で乗り切ることが多いです。

プログラミング自体は計算の道具として考えていたのですが、 怠けるために スムーズに仕事を進めるために覚えた shell芸とPerl を使う日々を送っております。 若い時は好きなことが出来ず腹立たしく思うことが多かったのですが、年を取ると皆のために仕方がないと思うようになってきました。

Linux の設定は極力デフォルトから変えないものとしております。 bash + 標準で入っている Perl 5 で、Perl の module も使わないという方針にしております。 Perl は shell script の拡張のような位置づけで使っています。

あまり褒められたやり方かもしれないのですが、 pipe の取り扱いが楽なのが非常に有難いです。 Text filter に該当すると思うのですが、以下のようなスケルトンで試作しながら挙動をみて動くようなものを徐々に作っていきます。

while(<>){
    # code を記述。
}
$ command hoge | perl fuga.pl 

またコマンドとパイプを取り込んだようなコードも書けるのも個人的には有難いです。

open(FR, "command $ARGV[0] |") ;
while(<FR>){
    # code を記述。
}
closer(FR);

shell + Perl は、邪道な書き方なのかもしれないのですが、もう少し評価されても良い気もしています。 shell 芸で、awksed との連携は、幾らか書籍が出ていますが、Perl は若干位置づけが違うようですね。 最近は multi core が、当たり前ですし xargs と即座に連携をとって並列に流せるのは有難いです。

とりあえず、Python で同じことができないかと考えていますが、 私の調べ方が悪いのかあまり短く書く方法が見つけていません。

欠点として、PerlPython と比べて、コードが汚くなりやすく読みにくいです。 また上級者は特異的な記法を使う場合もあり、万年中級者の私などは何年たっても発見があり全容は把握できません。