1.关联回溯参照 可以用\g1或\g{1}或\g(1)代替原来的\1. 引用紧跟的组使用\g(-1),\g{-1},\g-1,引用再前面的组使用\g(-2),以此类推。 例:$a99a = '([a-z])(\d)\g(-1)\g(-2)'; #matches a11a,g22g,x33x,etc. 2.命名回溯参照 给捕获的组附加一个名字,可写为(?...)或(?'name'...). 回溯参照时用\k{name},\k'name'或\g{name},\g'name'.可以为多个组添加相同名字,但只有第一个能被引用。在规则表达式外命名捕获缓冲区是通过哈希变量%...
by suyogi - Perl - 2008-08-26 17:48:16 阅读(1729) 回复(3)
perl6 引入了许多函数式编程的概念, 其中“元操作符(meta-operator)”应该是最有 FP 特色的。 什么是元操作符? 元操作符就是说,对一个运算符,进行某种变换,得到一个新的运算符,这个新的运算符和之前的运算符的参数形式、计算结果都不一样(可以说是面目全非)。 因为它是针对运算符的运算,因此称为元操作符符。 举个大家都熟悉的例子: 在很多语言里面,都支持 += 这样的运算符,比如在 perl5 中: $a += 2; 等同...
perl 没有树这种数据结构。C 语言中用链表,Ruby 内置了带顺序的 Hash,Python 也是一样。Lua, Javascript 都没有,这种特性的缺失在处理 XML 时表现的很明显。 perl 6 也没有**这个问题。 大家在处理类似的问题时,用什么数据结构来模拟树呢?
在用 perl 编程的过程中,实际中遇到一个问题,就是遍历一个数组的数组,针对这些每条数据执行一些规则。然后把改变后的数据保存回去。 我于是做了一个深度优先的迭代器,然后写了一个获取元素位置的算法。每次获取一个位置,然后根据这个位置保存回去。 感觉这种情况让代码的复杂度增加了一层。 后来发现 Ruby 的迭代器加代码块是解决这个问题的好办法,Python 的生成器也是类似的东西。 当然 Lisp 有很多机制可以实现简化这种...
一些特殊正则元字符说明: 1. *? 和 +? 和 {n,}? 懒惰匹配 1.1 非懒惰 echo "ab2c121a" |perl -ne 'print $1 if /(.*)\d/;' #print ab2c12 1.2懒惰 echo "ab2c121a" |perl -ne 'print $1 if /(.*?)\d/;' #print ab 2. 回溯引用和前后查找: 2.1 向前查找 (?=..) ec...
本帖最后由 zhuyubei 于 2012-08-13 20:07 编辑 今天调一个模块,调了很久。结果居然发现perl的hash有个很可怕的特性。以前没注意。现在和大家分享我的问题。 use warnings; use strict; my $a = {}; $a->{OK} = undef; #这里我们给ok赋值undef # 想看看OK下面是不是有键XX。应该是没有这个键的。返回0,没错 print exists $a->{OK}{ XX } ? 1 : 0; # 这里诡异的来了, 我刚刚只是exists检查下,结果perl 把{ OK }原来的...
我在代码前会写use 5.010使之使用5.10特性,解析器一直是5.14,后来换到5.12,发现一些脚本出错,原因是不慎使用了5.14里的偷懒语法。如何限制高版本解析器只用5.10的特性?
之前发过一个抓取页面的代码.可是我发现能抓取页面不能抓取json数据, 现在还在研究当中...发出原始的过程.找大伙一块研究研究...之前没玩过这东西.. 我还在搜论坛,看有没有前人做过或问过的.在这里mark一下.. 请问:如何抓取返回的json数据???。。。。 数据包:[code]POST /tools/web-sites-on-web-server/php/get-web-sites-on-web-server-json-data.php HTTP/1.1 Host: www.yougetsignal.com User-Agent: Mozilla/5.0 (X11; ...
小骆驼上说这个是追加: open LOG,"> $logfile"; 注意 "> " 前的空格 , 这个到底是什么意思啊, 书上是这么解释的 perl 会忽略它,但可以防止意外发生 初学者请教各位了