2010年11月21日星期日

笔记 : Marstering Perl

前向查找:(?=pattern) (?!pattern)

后向查找:(?<=pattern) (?<!pattern)

正则的debug:

脚本中 use re 'debug';

命令行 perl -Mre=debug script.pl

Regexp::Common 常用正则表达式

use Carp qw/carp croak cluck confess/;

cluck :打印堆栈后继续执行

confess:打印堆栈后停止执行

Hook::LexWrap 封装子程序,在子程序执行前后进行预定义代码

perl -d:SmallProf script.pl

DBI::Profile

perl -d:DProf script.pl

Devel::Profiler、Devel::Cover、Devel::Peek

Perl::Critic

临时修改某个库函数:*Some::Module::bar = sub { ... }

perl 命令行参数 -s ,简单置值(默认设为1),例如:

perl -s script.pl -someval=abc -otherval

$someval="abc"、$otherval=1,二者为全局变量

ConfigReader::Simple、Config::Scoped、AppConfig

IO::Interactive

$! 操作系统或库函数调用得到的错误

$? 最近一次调用wait()得到的错误

$@ 最近一次调用eval()得到的错误

$^E 操作系统特有的错误信息

退出值:my $exit_value= $?>>8;

终止程序的信号值:my $signal=$?&127;

若子程序出现内核转储,则低字节第8位置1:my $core_dump = $?&128;

__LINE__ 当前所在行数

use Fatal; 作用是open失败时自动输出die错误信息

Log4perl

do 每次都重新解析文件,而require和use只解析一次文件。

如果找不到文件,$!;如果找到文件,但是无法读取或解析,$@

YAML、YAML::Tiny、YAML::Syck

Storable、Clone::Any

DBM::Deep

二进制数 my $value = ob 10; # $value=2

Devel::Size、Devel::Peek

vec 将一个字符串当成二进制位向量处理

Tie::Cycle、Tie::Hash::Word::Counter

创建一个模块的发布包:

$ Scriptdist Module.pm

$ make disttest

$ make tardist

没有评论:

发表评论