2009年6月24日星期三

Perl Cookbook : Chapter 1 - Chapter 6

字符与数值的转换

$value     = ord("e");    # now 101
$character = chr(101);    # now "e"
printf("Number %d is character %c\n", 101, 101);
@ascii_character_numbers = unpack("C*", "sample");
print "@ascii_character_numbers\n";
#115 97 109 112 108 101
$word = pack("C*", @ascii_character_numbers);
#sample

Unicode::Normalize的NFD函数可以用来比较两个含unicode的字符串

Text::Tabs 用于tab与space之间的转换

Text::Wrap,Text::Autoformat 整理文本

Term::ReadKey 终端

Text::ParseWords,Text::CSV 解析文本

指定函数名

use subs qw(AVOGADRO);
local *AVOGADRO = sub ( ) { 6.02252e23 };

Scalar::Util 标量处理

Math::TrulyRandom 随机数

Math::Complex,PDL 数学模块

给整数部分加逗号:

sub commify {
    my $text = reverse $_[0];
    $text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
    return scalar reverse $text;
}

Time::localtime,Time::gmtime,Time::Local

Time::HiRes 时间处理

1秒以下的sleep 可以用 Time::HiRes qw(sleep);

perldoc -f splice 数组处理

List::Util 数组增强

Hash::Util 散列增强

Tie::IxHash 保持输入的顺序

%C = (%A, %B); 散列合并

Tie::RefHash 允许引用作为散列的key

表6-1 模式匹配的修饰符

递归匹配:

my $np;
$np = qr{
           \(
           (?:
              (?> [^( )]+ )    # Non-capture group w/o backtracking
            |
              (??{ $np })     # Group with matching parens
           )*
           \)
        }x;

没有评论:

发表评论