1.變數名的定義
Perl的一般變數、雜湊變數和陣列變數,分別用$、%和@開頭,而PHP的所有變數都以$開頭,這一點,似乎PHP更簡潔一些。而且,PHP的雜湊數組,本身已經是排過序的,Perl需要用Tie::IxHash才能得到排過序的雜湊數組。個人感覺PHP變數名的定義要好於Perl。
2.函數的多寡
Perl基礎的函數很少,而且多跟C接近。這一點,個人認為Perl要進階一些,系統一些。PHP的函數很多,遠遠多出Perl,PHP好像是需要什麼功能就做一個函數,所以數量很多很雜,相近的甚至是重複的函數也不少,這也是一些“正統”的人不喜歡PHP的原因之一。
3.擴充模組的多寡
Perl的擴充模組非常多,幾乎涉及所有領域,所以Perl幾乎無所不能,CPAN是Perl擴充模組的大本營。PHP的擴充模組集合稱為Pear,也有很多模組,不過比起CPAN,還是顯得少。
4.物件導向的能力
Perl的物件導向是用模組來實現的,感覺不適真正意義上的OO,只是一般意義上的函數和變數封裝。PHP4也大體如此。PHP5以後,物件導向的特性有了大幅度的改善,已經具備了幾乎所有的OO特性,儘管還沒有達到Java那樣的物件導向,感覺也很不錯了。
5.跨平台的能力
兩者都跨平台,不過Perl更傾向於Linux/Unix,在Windows上得藉助於ActivePerl,且mod_perl好像只跟Apache配合(沒嘗試過IIS和mod_perl結合,所以能否實現不是很清楚),PHP則兼顧多種環境,Windows上面的表現跟Linux/Unix下面幾乎一樣,跟Apache/IIS也能隨意結合,這一點,應該說PHP做得很好,可以做到隨意搭配。
總結
最直接的感覺,PHP來做伺服器端的嵌入式指令碼,兩個字:方便,然而由於其方便,犧牲了一些原則,有時候會有一些令人惱火的“方便”,比如,Post/Get的內容自動加“/”的設定,剛開始不明白,總也想不出什麼地方出了毛病,後來才知道是設定上的問題,這時候的感覺,就是PHP畫蛇添足。Perl是比較傳統的語言,它誕生的時候,並不是為了做動態網頁的,所以用它做動態網頁的時候,可能不如PHP方便,但是Perl很全面,做 Batch是Perl的強項,本來很複雜的東西,用Perl做,也許可以輕鬆解決。
總的說來,這兩個語言大體是相通的,所以只要會了其中一種,另外一種上手很容易,幾乎是“不費吹灰之力”。