PHP 教程:面向 Perl 開發者



Perl 是一種動態型別的、高階的通用程式語言。通常認為 Perl 是 Practical Extraction and Reporting Language(實用提取和報告語言)的首字母縮寫。另一方面,PHP 也是一種通用的指令碼語言。最初,PHP 代表 Personal Home Page(個人主頁),但如今它已被認定為遞迴縮寫“PHP:超文字預處理器”。

本章列出了 PHP 和 Perl 之間的一些主要異同點。這將幫助 Perl 開發人員快速理解 PHP 並避免常見錯誤。

Perl 和 PHP 之間的相似之處

Perl 和 PHP 都是指令碼語言。它們不用於在執行之前構建本機獨立的可執行檔案。

早期的 PHP 版本受到了 Perl 的啟發。PHP 的基本語法與 Perl 非常相似。兩者都與 C 共享許多語法特性。它們的程式碼對空格不敏感,每個語句都以分號結尾。

PHP 和 Perl 都使用花括號將多個語句組織成一個塊。在兩種情況下,函式呼叫都以函式名稱開頭,後跟括號括起來的實際引數,引數之間用逗號分隔。

  • PHP 中的所有變數都類似於 Perl 中的標量變數:前面帶有美元符號 ($) 的名稱。

  • 由於這兩種語言都是動態型別的,因此在使用 PHP 和 Perl 變數之前,不需要宣告其型別。

  • 在 PHP 中,與 Perl 一樣,變數除了當前儲存的值之外沒有內在的型別。你可以在同類型的變數中儲存數字或字串。

  • PHP 和 Perl 對雙引號字串("string")的解釋都比對單引號字串('string')的解釋更多。

Perl 和 PHP 之間的區別

PHP 可以嵌入到 HTML 中。儘管可以從命令列執行 PHP 指令碼,但它更常用作 Web 伺服器上的伺服器端指令碼語言,用於生成 Web 頁面。

如果你習慣於使用 Perl 編寫 CGI 指令碼,那麼 PHP 的主要區別在於你不再需要使用 print 或 heredoc 語句顯式列印大型的靜態 HTML 塊,而可以直接在 PHP 程式碼塊之外編寫 HTML 本身。

沒有 @ 或 % 變數 - PHP 只有 一種變數,以美元符號 ($) 開頭。無論標量還是複合,語言中的任何資料型別都可以儲存在這些變數中。在 Perl 中,陣列變數以 @ 符號為字首。雜湊變數也以 % 符號為字首。

與 Perl 不同,PHP 有一種名為陣列的資料型別,它可以是索引陣列關聯陣列,這類似於Perl 中的雜湊

PHP 中的函式呼叫看起來非常像Perl 中的子例程呼叫。另一方面,PHP 中的函式定義通常需要某種形式引數列表,就像在 C 或 Java 中一樣,Perl 中則不是這樣。

Perl 中變數的作用域預設是全域性的。這意味著頂級變數在子例程中可見。這通常會導致在函式之間濫用全域性變數。在 PHP 中,函式定義中變數的作用域預設是區域性的。

PHP 本身沒有模組系統。在 PHP 中,普通程式碼檔案和用作匯入庫的程式碼檔案之間沒有真正的區別。

break 和 continue 而不是 next 和 last - PHP 更像 C 語言,使用 break 和 continue 而不是 Perl 中的 next 和 last 語句。

沒有 elsif - 一個小的拼寫差異:Perl 的 elsif 是 PHP 的 elseif。

除了 Perl 風格的 (#)單行註釋之外,PHP 還提供 C 風格的多行註釋(/* comment */)和 Java 風格的單行註釋(// comment)。

正則表示式 - PHP 沒有特定於正則表示式的內建語法,但在其“Perl 相容”的正則表示式函式中具有大部分相同的功能。

廣告