什么是Perl?编程语言Perl详细介绍

2019-10-01 10:50:03于海丽

- 更好的 Unicode 支持:
自从 5.6 版以来, Unicode 支持已在各层面上大幅更新:
- 支持 Unicode 3.2.0 版 (Perl 5.6.1 支持 3.0.1 版)
- 在语言及内部层次上, 提供更普遍而平滑的 Unicode 环境
- 正则表示式能够配合Unicode 了
- 提供 Encode 模块, 以支持现存的编码方式 (包括各种中/日/韩系统)

- 多线程执行模式:
「解释器多线程法」(interpreter threads, 简称「ithreads」) 是新的多线程执行模式。我们强烈建议您用它来取代旧版的「5.005 多线程法」模式. 两者间主要的差异, 在于 ithreads 下必需明确宣告要共享的资料.

- 新的输入/输出模式:
新推出的 PerlIO 模式, 同时提供了源码层级的跨平台stdio 实作, 以及更丰富的输出入控制架构.

- 更精确的数值:
之前的 Perl 版本依赖于您系统上的字串/数值转换函数; 这往往造成了跨平台的障碍, 以及错误的计算结果.

- 64 比特支持:
目前的 64 比特支持已经成熟 -- 若您的系统支持 64 比特的整数或地址空间,就可以在编译时指定使用这些功能.

- 安全的信号 (signal) 处理:
之前的版本里, Perl 在接收信号时可能会破坏解释器的内部状态.

- 大量的新模块:
Digest::MD5, File::Temp, Filter::Simple, libnet, List::Util,Memoize, MIME::Base64, Scalar::Util, Storable, Switch,Test::More, Test::Simple, Text::Balanced, Tie::File, ...

- 彻底的兼容性测试:
Perl 现在具备了六倍于 5.6 版的测试套件, 并且每日在各种平台上进行装设测试.

[兼容性]
- 二进制档案不兼容:
主要由于 PerlIO 的导入, Perl 5.8 与先前的 Perl 版本之间并无「二进制兼容性」. 您可能会需要再次编译各个 XS 延伸模块.

- AIX 动态载入:
为了与 AIX 系统上的其他程序更加兼容, Perl 在 AIX 系统上启用了系统的动态载入, 而非早先的模拟方式.

- 停用 64 比特平台上的 Perl Malloc 内存配置:
Perl 的 malloc 函数在 64 比特定址的机器上似乎有许多问题. 因此, 我们现在预设使用系统原生的 malloc 函数.

- 散列顺序又改变了:
Perl 内部的散列函数又改成了较好的版本, 不过只要您的源码不依赖于特定的散列键顺序, 这就不成问题.

- my 的属性改在执行阶段处理:
my() 变数的属性目前改在执行阶段处理, 而非编译阶段.

- REF(...) 取代了 SCALAR(...):
为符合 ref() 的结果, 对参照 (reference) 的参照在字串里改以 "REF(...)"表示.

- 更新的 Unicode 处理模式, 大幅减少了需要使用 "use utf8" 之处:在 Perl 5.6 版时, 资料是否视为 Unicode, 端视其运算是否处于 "use utf8",编译命令的有效范围内而定; 现在, Perl 5.8 直接将 "Unicode 性质" 连结到资料上. 因此, 目前只有在程序码内用到 UTF-8 字面值 (literal) 时, 才需使用 "use utf8". (在没有 "use utf8" 时, 为了保持与现存命令稿的兼容性,字面值仍视为字节处理.)