相同之处

  • 编译脚本语言: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” 的正则表达式中。