2013/03/08

僕がPerlを使う理由

ずっとサーバ管理者やってるので、どんなUNIX系OSでも標準で入っているから、です。

実務では

*BSDでもLinuxでもサーバにログインして作業する時は、下記のような流れで行います。
  1. ワンライナー(cat,cut,grep,awk,sed,sort,uniqとか)
  2. ワンライナーが長くなる OR 何回も使う時はシェルスクリプトにする
  3. シェルスクリプトで面倒な処理はPerl(/usr/bin/perl+標準モジュール)で書く
  4. Perlの標準モジュールで足りない場合はcpanで入れる
どんなUNIX系OSでも入っているPerlと書きましたが、最初に触ったUNIXであるSolarisやNEWSにPerlがどんなPATHで入っていたのかは覚えてません。しかし、今までPerlが入っていなかったシステムというのも記憶に無いので、どんなシステムでも入っていると言っても差し支えないと思います。

あと、シェルスクリプトで面倒な場合はCで書いてコンパイルするという選択肢もありますが、コンパイラが入っていないサーバに出くわすと詰むのでやはりPerlです。

また、たまーに出くわすのですが、お客さんとこのサーバで、限定された外部ホストにしか繋がらない、新たにソフトウェアをインストールするのも厳禁、コンパイラは入ってないというような環境で少々手間のかかる処理をするような時は、PHP, Ruby, Pythonに比べるとPerlに一日の長があります。やはりPerlです。

PerlはUNIXの一部?

手元のOpenBSD 5.2でPerl製コマンドを探してみると、わりとあります。
% file /usr/bin/* /usr/sbin/* | grep -i 'perl script' ⏎
...
/usr/bin/libnetcfg:        a /usr/bin/perl script text executable
/usr/bin/libtool:          a /usr/bin/perl script text executable
/usr/bin/pkg-config:       a /usr/bin/perl script text executable
...
/usr/sbin/adduser:         a /usr/bin/perl script text executable
/usr/sbin/pkg_add:         a /usr/bin/perl script text executable
/usr/sbin/pkg_check:       a /usr/bin/perl script text executable
/usr/sbin/pkg_create:      a /usr/bin/perl script text executable
/usr/sbin/pkg_delete:      a /usr/bin/perl script text executable
/usr/sbin/pkg_info:        a /usr/bin/perl script text executable
/usr/sbin/pkg_mklocatedb:  a /usr/bin/perl script text executable
/usr/sbin/rmuser:          a /usr/bin/perl script text executable

FreeBSDは手元にないので試してないのですが、OpenBSDではユーザ追加・削除コマンドやパッケージ管理コマンドがPerlで書かれています。

同じ事をUbuntuでもやってみたら、dpkg-*がPerl製で、BSDと同じくadduser,deluserもPerl製でした。ApacheでおなじみapxsもPerl製ですね。

一方、CentOSではyumを中心としてPython製のコマンドが多く、逆にprove,perldoc等のPerl関連コマンドを除いてPerl製コマンドは殆どありませんでした。このあたりは文化の違いですかね。

まとめ

サーバ管理者視点では、シェルスクリプトは読み書き出来て当然として、Perlの読み書きも出来ると尚良いというところです。ワンライナーや短いスクリプトではsed, awkでも充分なケースも多々ありますし、コマンドの組み合わせで出来る事をPerlでやる事もありますが、いずれも道具なので作業する人が慣れた道具を使うのが良いですね。

更に、愛用する道具に貢献したり、コミュニティ勉強会に参加したり、道具を使う人が増えると尚の事。

枯れていて、どこにでも入っているPerlは最強の道具の一つと言っても過言ではないですね。

0 件のコメント:

コメントを投稿