tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

Perl があれば awk はいらない?

perl を使うようになれば awk はいらないか? - okky の日記

私は awkperl も使えるが、perl を使うようになったからと言ってawkを使う頻度は全然減っていない。

ここまでは同意。(僕はあんまり awk は使えんけど)。
だけど、その理由はぜんぜん納得できないよ。

a)perlはdefaultではついてこない環境がある
b)perlの強力さがsecurity上の弱点をも強化する

まず、a)、
Perl がデフォルトでついてこない環境なんて、今時ほとんど無いのではないか、と思う。「Perl がついてない環境」の代名詞的存在だった(と僕が勝手に思っているだけかも) Solaris だって、Solaris 8で Perl 5.0がついてくるBSD(って言っても FreeBSD しか分からんけど)も確かにデフォルトではついてこないけど、ちょっと ports を入れれば依存関係でもれなく入ってしまうだろう。Linux も商用(ってもこれも SuSERedHat しか分からんけど)なら付いてくるよね。

次に b) なんだけど、まったく意味不明なんですけど...。

もし僕が侵入者だったら、侵入に成功したら root パスワードを狙う。それがダメならローカルユーザのもっとも脆いパスワードを奪って、他のマシンへの進入し、root パスワードを狙い...。ってな感じになると思う。

何が言いたいかというと、侵入されたら終わり。間違いなく root を取られ、マシンのコントロールを握られる。Perl があろうが無かろうが関係ない。インストールすれば良いのだから。

確かに、

お客様は「Perlなしでもできる事は Perl なしでやってくれ。どうしても、本当に無理だと判ってから、Perlを入れるかどうか判断しよう」と言う。

こう言うお客さんはいる。けど、「無理だと判ってから」とまで言ってくれるのなら、Perl を入れさせてもらったほうがいいと思う。「Perl は絶対禁止!」とか言われたら、「をいをい、まぢかよ orz」と sh/awk スクリプトを組まざるを得ないけど。
昔同僚がこの制限を食らって、苦労してたなぁ...。
# ちょっと笑えるのが、制限が「/usr/bin 配下のコマンドなら良い」って、perl も /usr/bin なんですけど...。(この案件は Solaris)

僕の場合、awk を使う機会がある理由は簡単。「Perl は言語、awk はコマンド」というルールにしているから。逆に sh スクリプトを組むときは perl を呼ばないようにしている。それをやったら「sh でやれる」と見越した自分に対して、負けだから。負けを認めず、根性で書き続けるか、負けを認めて Perl で書き直し。
# 今はお客さん向けに作ることは無いから、決定権は基本的に自分

相手がお客さんだと、どうにもならないことはあるけど、ちゃんと説明/説得してから諦めたほうがいいと思うんだよなぁ。

正しい道具を使えないのはエンジニアとして不幸だし、構築側が不幸になるのは、巡りめぐってお客さんの不幸でもあるのではないか、と思うのだけど。