$ time php -r 'for ($i = 0; $i < 1000000; $i++) { print $i; }' > /dev/null 3.96 real 1.86 user 1.42 sys $ time perl -e 'for ($i = 0; $i < 1000000; $i++) { print $i; }' > /dev/null 0.89 real 0.67 user 0.01 sysmod_perlは安いレンタルサーバで使えないので、単価の安くなりがちなウェブ系の案件では使う理由が無くなってしまいます。 またPHPはその拡張モジュールも含めてたいていのレンタルサーバにインストールされてるので、冗談みたいに聞こえますがコマンドラインの扱えないプログラマでもデプロイできてしまうのです。 このように簡単でそこそこ早いというのは、単価の安いエンジニアを使えるというメリットがあります。デザイナーに毛が生えた程度のPHPプログラマでもなんとなく動くものが作れてしまう上に、たいていのお客さんは動いてさえいれば中の品質を評価するのは無理なので、安い方に流れてしまいがちなんですね。 翻ってPerlはプログラマのレベルが大きく3つの段階に分かれます。 (一)関数を定義することが出来る程度のプログラマ (二)オブジェクト指向がある程度理解できてるプログラマ (三)PerlベストプラクティスとモダンPerlを実践できるプログラマ 1のプログラマが書いたPerlのコードはPHPの単価の安いプログラマが書いたものとたいして変わりが無く、たいていのプログラマにとって読みにくくメンテが難しいかほぼ不可能な状態になります。 2のプログラマが書いたPerlのコードは1のプログラマには何をやってるのかわからず、3のプログラマにとっては非常に読みにくいコードになります。 3のプログラマが書いたPerlのコードは非常にきれいで読みやすいのですが、1や2のプログラマには何をやってるのかさっぱりわからなくなります。 この3つの段階によって、Perlはあたかも別の言語のように各レベルごとのプログラマにしか読めないコードになりやすいのです。 これはメンテナンスの継続性、後任探しに非常に問題があります。 というわけでRubyやPythonを使いましょう。 あとコメントでPerlはデバッグしずらいと言ってる人がいますが、これはウソです。 ちゃんとテストを書いたりデバッガを使いましょう。 モダンPerlの世界にいる限りなら、プログラム言語としてのPerlは決して悪くないです。 http://gihyo.jp/dev/feature/01/test-perl http://0xcc.net/blog/archives/000162.html
PHP と Perl/CGIの比較をしてみましょう。 以前も私はPerlばかり書いていましたが、 今は、どちらがよいかというと、個人的な意見としてはやはりPHPです。 それは、WEBアプリ用として沢山の標準的に使える関数が装備されており、Perlのようにモジュールを入れなくともほぼなんでも出来てしまうからです。 ※Perlもモジュールを入れれば何でも出来ますが、面倒だったりします^^‥ PHPでは、例えば、fopen で他のURLのファイルを開けたり、ApacheのBasic認証のパラメータを取得できたり、URLを分解できたりなど、その他数多くのライブラリが標準で使えます。 あと、Perlに比べてドキュメントが非常にしっかりしています。掲示板やMLなどで質問などしなくとも、ドキュメントにサンプルが載っているため、比較的簡単かつスピーディーに関数などを使えます。 あと、サーバ負荷の面でPerlより軽いというのがあります。 Perl も mod_perl という方法もありますが、コーディング方法が普通の記述法と変わってきたり結構面倒です。Apacheのモジュールとして動作するので、毎回OSがプロセスを起動するPerlに比べて非常に高速であるといえます。 それに、デバッグもphpは簡単です。print_r や var_dump といった変数出力用関数が標準で備わっており、配列のデータにどんなデータが入っているか、というのをビジュアルに表示してくれます。 http://phpspot.net/php/pgPHP%20vs%20Perl.html
平たく言えば、Perl にできて PHP にできない 無い。逆もない。 まぁ Perl の変態的な部分は真似できないがする必要もない。 個人的には Perl で全てが済むと思うのですが、何故にして PHP を使うのでしょうか? All in One だから。 標準状態で大抵の処理は関数化されている。 素人にはオブジェクト指向なんて邪魔以外の何者でもないからね。 それとベースの HTML の中に少しコードを入れるだけで始められるところも 受けがいい理由の一つだろう。 あと Perl は過去の遺物であるCGIのイメージに引っ張られすぎ。 モダン Perl という用語もあるが、まだ浸透しているとは言い難い。 mod_perl vs PHP なんてベンチマークも見た事がありませんし…それがあれば結果を見てみたかったりもします。 PHPの方が軽くて速いは本当? さがせばわりあい有るよ。 あと、どうせ比べるなら PHP も CGI モードでないと不公平だねぇ。 mod_perl ばっかりフューチャーされるけど自分的には CGI::SpeedyCGI お勧め。 SpeedyCGI - CGIスクリプトを常駐させて実行することによりスピードアップさせます 注意点はあるけど、普通のコードなら CGI から改変無く動く。 あと既存回答についてちょっと突っ込み。 ・データベースとの連関がよいので、データベースを使っているウェアが多い昨今では、有利である。 ﹁データベースとの連関がよい﹂の意味が分かんないな。今時DBに関連しない言語なんて実用ではほぼ無いだろ。 ・phpの中にはperl互換の関数が用意されているので、perlでできることはphpでもできる。その逆は真ではない。 勘弁して。perl 互換関数は正規表現ぐらいでしょ。 PHP: PHPの歴史 - Manual 歴史的に PHP は Perl もどきから発祥してるけど、良くも悪くも独自の方向性を持ってる。 Perl はフィルター機能で自身の文法すら拡張できるから php もどきにだって出来る。 やる意味もないし、やるべきでもないけど。 悪い意味での柔軟性もあるので、ほぼ Perl に不可能はない。
$ time php -r 'for ($i = 0; $i < 1000000; $i++) { print $i; }' > /dev/null 3.96 real 1.86 user 1.42 sys $ time perl -e 'for ($i = 0; $i < 1000000; $i++) { print $i; }' > /dev/null 0.89 real 0.67 user 0.01 sysmod_perlは安いレンタルサーバで使えないので、単価の安くなりがちなウェブ系の案件では使う理由が無くなってしまいます。 またPHPはその拡張モジュールも含めてたいていのレンタルサーバにインストールされてるので、冗談みたいに聞こえますがコマンドラインの扱えないプログラマでもデプロイできてしまうのです。 このように簡単でそこそこ早いというのは、単価の安いエンジニアを使えるというメリットがあります。デザイナーに毛が生えた程度のPHPプログラマでもなんとなく動くものが作れてしまう上に、たいていのお客さんは動いてさえいれば中の品質を評価するのは無理なので、安い方に流れてしまいがちなんですね。 翻ってPerlはプログラマのレベルが大きく3つの段階に分かれます。 (一)関数を定義することが出来る程度のプログラマ (二)オブジェクト指向がある程度理解できてるプログラマ (三)PerlベストプラクティスとモダンPerlを実践できるプログラマ 1のプログラマが書いたPerlのコードはPHPの単価の安いプログラマが書いたものとたいして変わりが無く、たいていのプログラマにとって読みにくくメンテが難しいかほぼ不可能な状態になります。 2のプログラマが書いたPerlのコードは1のプログラマには何をやってるのかわからず、3のプログラマにとっては非常に読みにくいコードになります。 3のプログラマが書いたPerlのコードは非常にきれいで読みやすいのですが、1や2のプログラマには何をやってるのかさっぱりわからなくなります。 この3つの段階によって、Perlはあたかも別の言語のように各レベルごとのプログラマにしか読めないコードになりやすいのです。 これはメンテナンスの継続性、後任探しに非常に問題があります。 というわけでRubyやPythonを使いましょう。 あとコメントでPerlはデバッグしずらいと言ってる人がいますが、これはウソです。 ちゃんとテストを書いたりデバッガを使いましょう。 モダンPerlの世界にいる限りなら、プログラム言語としてのPerlは決して悪くないです。 http://gihyo.jp/dev/feature/01/test-perl http://0xcc.net/blog/archives/000162.html