Perl编译指示

Perl编译指示

=====================================

[编译指示]
[用途]
=====================================

use autouse
提供了一种机制, 使得只有调用模块中的函数才能在运行时加载该模块

use base
让程序员根据编译时列出的父类声明派生类, 从而不再需要使用 require 。

例如, use base qw(A B) ;等效于 BEGIN{ requireB::push(@ISA, qw(A B));}

use bytes
在 Perl 5.6 之前 所有字符串都当做一系列字节来处理。 现在, 字符串可以含有比数字编码字节范围更广的字节。 bytes 编译指示用于规定代码使用上述旧的面向字节的语义

use constant
声明一个命名符号, 代表指定的标量或列表常量。 例如:
use constant BUFFER_SIZE=>4096;
use constant OS=>'Solaris';

use diagnostics
在 Perl 编译器和解释器发出的诊断信息之外, 强制显示更详细的信息。 由于它只能影响到最内层的块, 因一般需要把编译指示放在程序开头位置。 不能使用 no diagnostics

use integer
这是一个词法域的编译指示, 告诉编译器以整数算数处理所有的算数操作, 即在执行这些操作时舍去浮点数的小数部分

use locale
这是一个词法域的编译指示, 告诉编译器在处理正则表达式、内建函数或字符转换等操作时启用或关闭 POSIX 现场

use open
声明一个或多个 I/O 操作的规范; 当前支持的两种规范是 :raw 和 :ctlf

use overload
负责在使用对象时重新定义内建操作的涵义。 有关重载运算符的示例可参见标准 Perl 库中的 Math::BigFloat

use strict 'vars'
使用 'vars' 参数, 要求必须使用词法变量 (my) 或带有包名和作用域运算符的完全限定的变量名与导出变量, 否则就会编译出错

use strict 'ref'
如果脚本中用到了符号引用的话, 则产生运行时错误, 譬如 typeglob

use strict 'subs'
如果用到了裸字(bareword)并且它不是预先定义的子例程或文件句柄的话, 就触发编译时错误。

use strict
如果用到了符号引用、声明了非词法变量或用到了非子例程或文件句柄的裸字的话, 则产生编译时错误

use vars qw(list)
在引入 our 之前用于声明全局变量

use warnings
这是一个词法域的编译指示, 告诉编译器更灵活地控制 Perl 的内建警告, 譬如 -w 开关或者 $^W 变量

use lib 'library path'
在编译时载入库, 而不是在运行时载入

use sigtrap 'signal names'
指定一组符号处理程序, 用于初始化列出的符号。 如果不使用一组默认符号作为参数的话, 则会打印程序堆栈信息, 并发出 ABRT 信号

use subs qw(subroutine list)
预先声明的子例程列表, 使得可以不用括号来调用列出的子例程, 并覆盖原有的内建函数

no integer
如需关闭或不输出编译指示, 只需在该编译指示前面加上 no 即可

猜你喜欢

转载自haiouc.iteye.com/blog/1774261