小风儿 发表于 2015-12-27 09:39:04

Study 《Perl Cookbook》



1: 子串截取

$value = substr($string, $offset, $count);
$value = substr($string, $offset);

substr($string, $offset, $count) = $newstring;
substr($string, $offset, $count, $newstring);# 与上一条语句等价
substr($string, $offset)         = $newtail;
某些情况下使用unpack函数更方便,虽然unpack是只读的,但是效率更高,一次你可以取出多个子串来
# 先取5字节,跳过3字节,再取2个8字节,最后取剩下的
# (注意: 只支持ASCII,不支持Unicode)
($leading, $s1, $s2, $trailing) = unpack("A5 x3 A8 A8 A*", $data);

# 按每5字节分割为数组
@fivers = unpack("A5" x (length($string)/5), $string);

# 分割为单字符数组
@chars= unpack("A1" x length($string), $string);



2. 设置初始值

# 将$b的值赋给$a,如果$b不为真,则将$c的值赋给$a
$a = $b || $c;

# 当$x不为真时,将$y的值赋给$x
$x ||= $y;
当 0, "0", 和 "" 是变量的有效值的时候,可以这样定义变量:
# 将$b的值赋给$a,如果$b没有被定义,则将$c的值赋给$a
$a = defined($b) ? $b : $c;

# 将来perl会支持“新的”或定义操作符
$a = $b // $c;


3.不用临时变量交换值

($VAR1, $VAR2) = ($VAR2, $VAR1);

实际上不止可以这样交换2个变量,可以直接交换多个变量,非常方便吧


4.字符与值的转换

$num= ord($char);
$char = chr($num);


To Be Continue.......
页: [1]
查看完整版本: Study 《Perl Cookbook》