相同之處
編譯腳本語言:Perl 和 PHP 二者都是腳本語言。這意味著他們不用提前獨立執行生產原生可執行檔。
語法:PHP 的基本語法非常接近 Perl 的,並且二者都與 C 代碼分享很多語法特性像空格、語句由分號終止和花括號將多條語句組織成代碼塊。函數呼叫開始於函數名,緊接在後面的是包圍在圓括號中並由逗號分隔的實際參數。
$符號變數:所有變數在 PHP 中看起來像 Perl 標量變數:一個名稱在一個 $ 符號 ($) 的前面。
沒有宣告變數:和 Perl 語言一樣,PHP 變數在使用前你也不需要宣告它的型別。
鬆散類型的變數:和 Perl 語言一樣,PHP 變數沒有內在類型除了他們目前的值的類型之外。你可以將數字或字串儲存在相同類型的變數裡。
字串和變數插值法:PHP 和 Perl 使用雙引號字串的次數比使用單引號的字串的次數多很多。
不同之處
PHP 是 HTML 嵌入式語言:雖然可以使用 PHP 把任意任務從命令列運行,它通常需要連接到一個 Web 伺服器並且用於產生 Web 頁面。如果你習慣用 Perl 編寫 CGI 腳本,它和 PHP 的主要區別是,不再需要明確地列印大量的靜態 HTML 或 heredoc 語句,而是可以簡單地編寫 HTML 本身以外的 PHP 程式碼區塊。
沒有 @ 或 % 變數:PHP 只有一個類型的變量,它始於一個美元符號($)。無論是標量類型或複合類型,任何資料類型的語言可以儲存在這些變數中。
數組和散列:有一個叫做數組的資料類型,像是散列和數組扮演的角色在 Perl 語言中。
指定的函數參數:函數呼叫在 PHP 看起來很像在 Perl 子程式裡呼叫。在 PHP 的函數定義中,而另一方面講,通常需要某種正式的參數列表如 C 或 Java 在 PERL 中並非如此。
在 Perl 函數中變數作用域:變數的預設範圍是全域性的。這意味著頂級變數在子程序是可見的。通常,這導致全域函數的混雜使用。在 PHP 中,變數在函數定義的範圍中預設是局部的。
沒有像這樣的模組系統:在 PHP 中在正常程式碼檔案和程式碼檔案之間用作導入庫沒有真正區別。
使用關鍵字 Break 和 continue 不使用關鍵字 next 和 last:PHP 更像 C 語言,使用關鍵字 Break 和 continue 取代關鍵字 next 和 last。
沒有 elsif:一個小小的拼法的差別:Perl 的 elsif 是 PHP 中的 elseif。
更多種類的註釋:除了 Perl-style(#) 單行註釋,PHP 提供 C 風格的多行註釋(/*註釋*/)和 Java 風格的單行註釋(/ /註釋)。
正規表示式:PHP 沒有內建的特定於正規表示式的語法,但大部分相同的功能在其 "Perl-compatible" 的正規表示式中。