<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-31545981</id><updated>2011-12-14T18:51:34.887-08:00</updated><category term='install'/><category term='activeperl'/><category term='ppm'/><category term='bioperl'/><title type='text'>Perl笔记</title><subtitle type='html'>A zhangchn's blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31545981.post-1138297499047025519</id><published>2009-01-28T08:20:00.000-08:00</published><updated>2009-01-28T11:50:32.243-08:00</updated><title type='text'>内核的幽默</title><content type='html'>&lt;blockquote&gt;CONFIG_LGUEST:                                                       &lt;br /&gt;&lt;br /&gt;If unsure, say N.  If curious, say M.  If masochistic, say Y.     &lt;/blockquote&gt;&lt;br /&gt;如上。&lt;br /&gt;&lt;br /&gt;BTW，一定保证DISKLABEL=yes或者genkernel时--disklabel，如果想用UUID指定根分区的话。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-1138297499047025519?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/1138297499047025519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=1138297499047025519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1138297499047025519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1138297499047025519'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2009/01/blog-post.html' title='内核的幽默'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-4438276526075823768</id><published>2008-12-28T11:04:00.000-08:00</published><updated>2008-12-28T22:04:28.360-08:00</updated><title type='text'>Larry Wall关于Perl6的演讲</title><content type='html'>Youtube/Google Video上有&lt;a href="http://www.youtube.com/watch?v=JzIWdJVP-wo"&gt;长达1小时的视频&lt;/a&gt;。Larry提到很多已经公开讨论过的细节，比如：Perl6是许多语言的语言，操作符‘|’不再是从左到右依次求值了，而是满足并行求值的需求，操作符‘||’则进行Perl5中‘|’的串行；比如P6RE（没错，不再是PCRE了）里，一切都是默认x修饰过的扩展语法（所以没有x修饰符了），也没有s修饰了，一切都是多行的，\N用来匹配“非\n”，^^和^匹配字符串的开始和一行的开始，也没有/1，统统使用$1了；如，操作符的定义也可以极端灵活，现场展示了定义"+-"操作符的语法等等。一如既往，Larry希望别人能够继续“偷窃”perl对于Regex/正则的贡献。&lt;br /&gt;&lt;br /&gt;Larry在解答现场提问时，提到自己不参与涉及语言实现的工作，一切实现都交予社区来进行，而他本人负责协调设计语言本身。还有人提问唐凤的近况，Larry提到唐凤似乎罹患Attention Deficit，不过目前已经停止用药了。祝她早日康复啊！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-4438276526075823768?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/4438276526075823768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=4438276526075823768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/4438276526075823768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/4438276526075823768'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2008/12/larry-wallperl6.html' title='Larry Wall关于Perl6的演讲'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-4636533796376551458</id><published>2008-12-06T00:37:00.000-08:00</published><updated>2008-12-06T00:51:21.075-08:00</updated><title type='text'>新的ProjectCartoon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vOruKJoY1mU/STo6CRxfMtI/AAAAAAAAAug/eKVphZA06t4/s1600-h/treeproj.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 214px; height: 400px;" src="http://1.bp.blogspot.com/_vOruKJoY1mU/STo6CRxfMtI/AAAAAAAAAug/eKVphZA06t4/s400/treeproj.PNG" alt="" id="BLOGGER_PHOTO_ID_5276593724223075026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;软件工程的讽刺漫画ProjectCartoon.com(beta)今年又有几幅更新：其中iSwing明显是在模仿苹果的iPod剪影广告。辛普森都要恶搞一下的产品……&lt;br /&gt;&lt;br /&gt;听说Python 3发布后许多人在抨击兼容性，还有比如:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; (16**8**4+1)/2&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;  File "&amp;lt;pyshell#2&amp;gt;", line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;    (16**8**4+1)/2&lt;br /&gt;OverflowError: int/int too large for a float&lt;br /&gt;&gt;&gt;&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;不知道perl6会咋样。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-4636533796376551458?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/4636533796376551458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=4636533796376551458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/4636533796376551458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/4636533796376551458'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2008/12/projectcartoon.html' title='新的ProjectCartoon'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vOruKJoY1mU/STo6CRxfMtI/AAAAAAAAAug/eKVphZA06t4/s72-c/treeproj.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-1388820722819670472</id><published>2008-11-18T05:33:00.000-08:00</published><updated>2008-11-18T05:40:17.437-08:00</updated><title type='text'>新的bioperl</title><content type='html'>从邮件列表看，bioperl还在讨论是否保留针对perl-5.8的支持。Perl-5.8是Mac OS X 10.5 Leopard的标配版本，估计5.10要等到Snow Leopard了，所以5.8还是要支持的吧！Mac的平台跨度不小，估计想发布自己维护的二进制Perl也不是容易事。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bioperl.org/wiki/Release_Schedule"&gt;根据计划&lt;/a&gt;，貌似bioperl-1.6要发布了，大概就在一个月以内吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-1388820722819670472?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/1388820722819670472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=1388820722819670472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1388820722819670472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1388820722819670472'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2008/11/bioperl.html' title='新的bioperl'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-1594120190557394821</id><published>2008-11-18T05:18:00.000-08:00</published><updated>2008-11-18T05:23:22.478-08:00</updated><title type='text'>不知道iPhoneOS2上的perl啥时候发布</title><content type='html'>iPhone 2.x的python和pyobjc已经用了很久了，也有人用来写Cydia上的应用了。perl的编译倒是不大顺利，貌似&lt;a href="http://www.telesphoreo.org/pipermail/iphone-gcc/2008-October/000425.html"&gt;还有些test没过&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;希望能在Cydia上早日再见到perl。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-1594120190557394821?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/1594120190557394821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=1594120190557394821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1594120190557394821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1594120190557394821'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2008/11/iphoneos2perl.html' title='不知道iPhoneOS2上的perl啥时候发布'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-5372542766017002231</id><published>2008-01-25T09:22:00.000-08:00</published><updated>2008-01-25T09:37:21.057-08:00</updated><title type='text'>/.上的回帖</title><content type='html'>以下回帖节选自/.上&lt;a href="http://it.slashdot.org/it/08/01/25/1438247.shtml"&gt;又一篇&lt;/a&gt;关于perl有所为有所不为的争论：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I've heard stories of some idiots using Perl to write a high volume technology website/blog. I'm still trying to find out what site it is.&lt;/blockquote&gt;——说的就是/.嘛！&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;My favorite "You did WHAT in perl?" response is: On several projects, when there were portability problems, I've created a Makefile entry that runs a "man foo" command and pipes the data to a perl script, which generates C files for that system. It's typically just header files, but sometimes also a few .c files with data structures and/or simple functions to intercede with variant library routines.&lt;br /&gt;&lt;br /&gt;It's fun to watch people's reaction when they realize that "You wrote a perl script that reads the manual and generates the code?" I just respond something like "Uh, yeah; you got a problem with that?"&lt;br /&gt;&lt;br /&gt;Especially fun has been the couple of discussions in which I expressed a great deal of skepticism of various "AI" claims. Then someone brings up the fact that I write perl programs that read English-language docs and generate code from them. They're obviously puzzled by the fact that I do this while looking skeptically at "AI" proposals. It's like they expect me to just shrug and write other impossible things in perl.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-5372542766017002231?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/5372542766017002231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=5372542766017002231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/5372542766017002231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/5372542766017002231'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2008/01/blog-post.html' title='/.上的回帖'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-2910720836437631285</id><published>2007-12-17T09:15:00.000-08:00</published><updated>2007-12-17T09:18:23.039-08:00</updated><title type='text'>A conceit of 2D operator in perl</title><content type='html'>发信人: zhangchn (囧囧秋月朙), 信区: Perl&lt;br /&gt;标  题: Re: 如何确定一个元素是否存在于某个数组中？&lt;br /&gt;发信站: 水木社区 (Mon Dec 17 21:10:19 2007), 转信&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;会不会弄个二维的？&lt;br /&gt;    @a&lt;br /&gt;     \&lt;br /&gt;$x&lt;&lt;-#-&gt;&gt;$y&lt;br /&gt;     \&lt;br /&gt;    %b;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;【 在 flw (梨花小蓓蕾) 的大作中提到: 】&lt;br /&gt;: 看 Perl 6 的语法，沦陷的多了，&lt;br /&gt;: &lt;&lt;==&gt;&gt; &lt;&lt;+&gt;&gt; &lt;&lt;-&gt;&gt; 都是运算符了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-2910720836437631285?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/2910720836437631285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=2910720836437631285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/2910720836437631285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/2910720836437631285'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/12/conceit-of-2d-operator-in-perl.html' title='A conceit of 2D operator in perl'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-1773578798316696675</id><published>2007-12-03T08:33:00.000-08:00</published><updated>2008-12-08T19:01:31.998-08:00</updated><title type='text'>不是吧？perl在日本也搞サービス？</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vOruKJoY1mU/R1QwlBgOm1I/AAAAAAAAAQo/68-v8gPnUY4/s1600-R/seibisu.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_vOruKJoY1mU/R1QwlBgOm1I/AAAAAAAAAQo/3ZOcUMfeo9E/s400/seibisu.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5139786487353482066" /&gt;&lt;/a&gt;&lt;br /&gt;详见&lt;a href="http://www.slideshare.net/lapis25/perl-47997/"&gt;http://www.slideshare.net/lapis25/perl-47997/&lt;/a&gt;，第53页。&lt;br /&gt;&lt;br /&gt;可惜不太萌。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-1773578798316696675?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.slideshare.net/lapis25/perl-47997/' title='不是吧？perl在日本也搞サービス？'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/1773578798316696675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=1773578798316696675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1773578798316696675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/1773578798316696675'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/12/perl.html' title='不是吧？perl在日本也搞サービス？'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vOruKJoY1mU/R1QwlBgOm1I/AAAAAAAAAQo/3ZOcUMfeo9E/s72-c/seibisu.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-7168110534566257915</id><published>2007-06-19T04:50:00.000-07:00</published><updated>2007-06-19T04:50:44.833-07:00</updated><title type='text'>二进制的"tooold"</title><content type='html'>&lt;a href="http://zhcn.blogspot.com/2007/06/tooold.html#links"&gt;printf("%08b "x6,map(ord,split //,"tooold"));&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-7168110534566257915?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://zhcn.blogspot.com/2007/06/tooold.html#links' title='二进制的&quot;tooold&quot;'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/7168110534566257915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=7168110534566257915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7168110534566257915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7168110534566257915'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/06/tooold.html' title='二进制的&quot;tooold&quot;'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-5649053155444961307</id><published>2007-05-21T11:39:00.000-07:00</published><updated>2007-05-21T11:42:09.103-07:00</updated><title type='text'>关于StandAloneBlast!!!</title><content type='html'>使用Bio::Tools::Run::StandAloneBlast时，一定要保证输出临时文件的目录，一般是当前的工作目录，具有w权限！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-5649053155444961307?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/5649053155444961307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=5649053155444961307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/5649053155444961307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/5649053155444961307'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/05/standaloneblast.html' title='关于StandAloneBlast!!!'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-8643331845593845143</id><published>2007-03-22T06:34:00.000-07:00</published><updated>2007-03-22T06:52:32.397-07:00</updated><title type='text'>正则表达式原来也可以计数的</title><content type='html'>比如，比较等长（已对齐）字符串中不同的字符数。&lt;br /&gt;$a="attggc";&lt;br /&gt;$b="tttgac";&lt;br /&gt;print (($a^$b)=~y/\0//c);&lt;br /&gt;&lt;br /&gt;y///函数不但有tr那样的功能，还可以返回匹配的次数。/c匹配指定模式的补集。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-8643331845593845143?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/8643331845593845143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=8643331845593845143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/8643331845593845143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/8643331845593845143'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/03/blog-post.html' title='正则表达式原来也可以计数的'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-7368136863458540774</id><published>2007-03-10T18:51:00.000-08:00</published><updated>2007-03-10T19:02:02.107-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bioperl'/><title type='text'>Bio::Structure</title><content type='html'>Bio::Structure里面的东西还真不多。pod里最常见的解释就是：&lt;br /&gt;&lt;blockquote&gt;nothing useful until I get symbolic references to do what I want.&lt;/blockquote&gt;&lt;br /&gt;Orz!&lt;br /&gt;到cpan翻了一下1.5，发现除了几个有关二级结构的包还略有些内容，其它基本上都是空架子。sigh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-7368136863458540774?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/7368136863458540774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=7368136863458540774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7368136863458540774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7368136863458540774'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/03/biostructure.html' title='Bio::Structure'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-3677368792646173357</id><published>2007-03-05T04:28:00.000-08:00</published><updated>2007-03-05T04:29:15.001-08:00</updated><title type='text'>perlvar的实用主义？</title><content type='html'>Perl的预设变量里，居然有$a, $b!&lt;br /&gt;无语了。纯实用主义啊！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-3677368792646173357?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/3677368792646173357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=3677368792646173357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/3677368792646173357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/3677368792646173357'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/03/perlvar.html' title='perlvar的实用主义？'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-50426716290229221</id><published>2007-02-21T00:23:00.000-08:00</published><updated>2007-02-21T00:24:28.061-08:00</updated><title type='text'>转贴：Perl is Nothing</title><content type='html'>发信人: Aldarion (Lord of the Ships and Havens of Numenor), 信区: Perl&lt;br /&gt;标  题: Re: 新年第一篇perl&lt;br /&gt;发信站: 水木社区 (Wed Feb 21 12:18:27 2007), 转信&lt;br /&gt;&lt;br /&gt;then, perl is Nothing...&lt;br /&gt;【 在 yaojii (人品积攒中 大灰狼&amp;土拨鼠=happy) 的大作中提到: 】&lt;br /&gt;: 标  题: Re: 新年第一篇perl&lt;br /&gt;: 发信站: 水木社区 (Wed Feb 21 08:39:34 2007), 转信&lt;br /&gt;: &lt;br /&gt;: I have to say. Nothing is perfect.&lt;br /&gt;: 【 在 superisaac (反省中.....) 的大作中提到: 】&lt;br /&gt;: : perl is perfect&lt;br /&gt;: &lt;br /&gt;: &lt;br /&gt;: --&lt;br /&gt;: &lt;br /&gt;: ※ 来源:·水木社区 newsmth.net·[FROM: 66.77.81.*]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;※ 来源:·水木社区 newsmth.net·[FROM: 59.151.45.*]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-50426716290229221?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/50426716290229221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=50426716290229221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/50426716290229221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/50426716290229221'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/02/perl-is-nothing.html' title='转贴：Perl is Nothing'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-7516159546547207297</id><published>2007-02-18T20:51:00.000-08:00</published><updated>2007-02-18T21:21:14.095-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activeperl'/><category scheme='http://www.blogger.com/atom/ns#' term='ppm'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='bioperl'/><title type='text'>PPM的包管理真烂</title><content type='html'>确切地说，不是ppm烂，而是bioperl.org不地道。&lt;a href="http://bioperl.org/DIST/"&gt;http://bioperl.org/DIST/&lt;/a&gt; 的包跟package.xml不同步(/DIST/下面只有bioperl-1.5.2_102，而package.xml里的bioperl-1.5.2_100在/DIST/old_releases里，而/DIST/RC则是空空如也)，而按照官方的&lt;a href="http://www.bioperl.org/wiki/Installing_Bioperl_on_Windows"&gt;Windows安装指南&lt;/a&gt;，根本就是缘木求鱼。&lt;br /&gt;&lt;br /&gt;在维护者修订错误之前，也只能手动安装了。把/DIST/old_releases里的&lt;a href="http://bioperl.org/DIST/old_releases/bioperl-1.5.2_100-ppm.tar.gz"&gt;bioperl-1.5.2_100.ppm.tar.gz&lt;/a&gt;下载到一个目录，然后拷贝&lt;a href="http://bioperl.org/DIST/package.xml"&gt;/DIST/package.xml&lt;/a&gt;里的这一段：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;softpkg name="bioperl" version="1.5.2_100" date="2006-12-6"&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;bioperl&amp;lt;/title&amp;gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&amp;lt;/softpkg&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;然后，加上第一行：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;在同一个目录里另存为bioperl-1.5.2.ppd。&lt;br /&gt;按照Windows的安装指南里配置bioperl的repo，然后安装Bundle-bioperl-core，这些依赖都满足后，则可以继续手动安装了。&lt;br /&gt;&lt;br /&gt;打开cmd.exe，进入下载的目录，运行ppm-shell。&lt;br /&gt;&lt;pre&gt;ppm&amp;gt; repo add ./ blablabla&lt;/pre&gt;&lt;br /&gt;这时会更新repo。&lt;br /&gt;&lt;pre&gt;ppm&amp;gt; install bioperl-1.5.2.ppd&lt;br /&gt;Unpacking bioperl-1.5.2_100...done&lt;br /&gt;Generating HTML for bioperl-1.5.2_100...done&lt;br /&gt;Updating files in site area...done&lt;br /&gt;1706 files installed&lt;/pre&gt;&lt;br /&gt;这样就OK了。&lt;br /&gt;&lt;br /&gt;参考：&lt;a href="http://www.anaesthetist.com/mnm/perl/Findex.htm#ppmlocal.htm"&gt;如何安装本地PPM&lt;/a&gt;(注意，其中某些PPM参数已过时。)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-7516159546547207297?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/7516159546547207297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=7516159546547207297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7516159546547207297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/7516159546547207297'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2007/02/ppm.html' title='PPM的包管理真烂'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-116473726804382305</id><published>2006-11-28T10:07:00.000-08:00</published><updated>2006-11-28T10:07:48.110-08:00</updated><title type='text'>苹果的质量，永远的痛</title><content type='html'>这两天一直在犹豫，是MB/MBP还是ThinkPad/Presario。Apple的硬件质量似乎一直不好，虽然外形超酷的口碑一直很好。&lt;br /&gt;&lt;br /&gt;不过，根据专业拍苹果网站&lt;a href="http://www.appledefects.com/?p=162"&gt;AppleDefects.com的消息&lt;/a&gt;，itnews.com.au说，你大可以放弃购买额外的质保，因为绝大多数硬件产品在长达3年的窗口期都不会出问题。可惜凡事皆有例外，对于这个结论，例外就是——你买了苹果！&lt;br /&gt;&lt;br /&gt;上次买苹果不良MB/MBP的cnet.com.au的编辑该不会跳槽去了itnews.com.au了吧？&lt;br /&gt;&lt;br /&gt;文章结尾还说，虽然AppleCare很糟糕，但是Dell的支持会更加糟糕！天哪！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-116473726804382305?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.appledefects.com/?p=162' title='苹果的质量，永远的痛'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/116473726804382305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=116473726804382305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473726804382305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473726804382305'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/11/blog-post_116473726804382305.html' title='苹果的质量，永远的痛'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-116473499687881375</id><published>2006-11-28T09:29:00.000-08:00</published><updated>2006-11-28T09:29:56.880-08:00</updated><title type='text'>继续赤果果</title><content type='html'>&lt;pre&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use POSIX;&lt;br /&gt;use CGI::Fast qw(:standard);&lt;br /&gt;&lt;br /&gt;use lib '/home/apache/fcgi_files';&lt;br /&gt;use Util;&lt;br /&gt;use MySes;&lt;br /&gt;#use URI::Escape;&lt;br /&gt;#use MIME::Base64;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my $title = "query";&lt;br /&gt;#my $LOGDIR = "/home/coremail/logs";&lt;br /&gt;my $LOGDIR = "/home/webedit/young/logs";&lt;br /&gt;my $logname = "Grade_Act_3G";&lt;br /&gt;&lt;br /&gt;my $PAGEDIR = '/home/apache/fcgi_files/html/163';&lt;br /&gt;&lt;br /&gt;# read page&lt;br /&gt;open(INDEX,"$PAGEDIR/index.htm") || die "Open index.htm: $!";&lt;br /&gt;my @page_index = &lt;index&gt;;&lt;br /&gt;close(INDEX);&lt;br /&gt;&lt;br /&gt;=head&lt;br /&gt;open(ERROR,"$PAGEDIR/error.htm") || die "Open error.htm: $!";&lt;br /&gt;my @page_error = &lt;error&gt;;&lt;br /&gt;close(ERROR);&lt;br /&gt;=cut&lt;br /&gt;&lt;br /&gt;while(my $req = new CGI::Fast)&lt;br /&gt;{&lt;br /&gt; my %replace = ();&lt;br /&gt; my $today = POSIX::strftime("%F",localtime);&lt;br /&gt; my $logfile = "$LOGDIR/$logname\_$today.err";&lt;br /&gt; my $sid = $req-&gt;param('sid');&lt;br /&gt; unless($sid)&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;       my $session = MySes-&gt;new($sid);&lt;br /&gt;       $session-&gt;Delete;&lt;br /&gt;   }&lt;br /&gt; print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt; PrintPage(\@page_index,\%replace);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-116473499687881375?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jifen.mail.163.com/cgi-bin/163/logout.fcgi' title='继续赤果果'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/116473499687881375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=116473499687881375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473499687881375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473499687881375'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/11/blog-post_28.html' title='继续赤果果'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-116473493147774079</id><published>2006-11-28T09:28:00.000-08:00</published><updated>2006-11-28T09:28:51.593-08:00</updated><title type='text'>网易赤果果</title><content type='html'>&lt;pre&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use POSIX;&lt;br /&gt;use IO::Socket;&lt;br /&gt;use CGI::Fast qw(:standard);&lt;br /&gt;use CGI::Cookie;&lt;br /&gt;use LWP::UserAgent;&lt;br /&gt;use URI::Escape;&lt;br /&gt;&lt;br /&gt;use lib '/home/apache/fcgi_files';&lt;br /&gt;use Util;&lt;br /&gt;#use CMAPI;&lt;br /&gt;use MySes;&lt;br /&gt;use Grade;&lt;br /&gt;use UserInfo;&lt;br /&gt;use MyLog;&lt;br /&gt;#use URI::Escape;&lt;br /&gt;#use MIME::Base64;&lt;br /&gt;&lt;br /&gt;sub handle_term;&lt;br /&gt;&lt;br /&gt;$SIG{'TERM'} = \&amp;handle_term;&lt;br /&gt;$SIG{'INT'} = \&amp;handle_term;&lt;br /&gt;$SIG{'ABRT'} = \&amp;handle_term;&lt;br /&gt;$SIG{'CHLD'} = 'IGNORE';&lt;br /&gt;&lt;br /&gt;my $domain = '163.com';&lt;br /&gt;&lt;br /&gt;#my $title = "query";&lt;br /&gt;#my $LOGDIR = "/home/coremail/logs";&lt;br /&gt;my $LOGDIR = "/home/webedit/young/logs";&lt;br /&gt;my $logname = "Grade_Act_3G";&lt;br /&gt;&lt;br /&gt;my $PAGEDIR = '/home/apache/fcgi_files/html/163';&lt;br /&gt;&lt;br /&gt;# read page&lt;br /&gt;open(INDEX,"$PAGEDIR/index.htm") || exit(0);#die 'EXIT' "Open login.htm: $!";&lt;br /&gt;my @page_index = &lt;index&gt;;&lt;br /&gt;close(INDEX);&lt;br /&gt;&lt;br /&gt;open(LOGIN,"$PAGEDIR/login.htm") || exit(0);#die 'EXIT' "Open login.htm: $!";&lt;br /&gt;my @page_login = &lt;login&gt;;&lt;br /&gt;close(LOGIN);&lt;br /&gt;&lt;br /&gt;=head&lt;br /&gt;open(ERROR,"$PAGEDIR/error.htm") || die 'EXIT' "Open error.htm: $!";&lt;br /&gt;my @page_error = &lt;error&gt;;&lt;br /&gt;close(ERROR);&lt;br /&gt;=cut&lt;br /&gt;&lt;br /&gt;my $errmsg = "系统繁忙，暂时未能响应你的请求，请稍候。";&lt;br /&gt;my $loginerrmsg = "验证失败，请先登录";&lt;br /&gt;my $loginblockmsg = "失败尝试次数过多，请稍后再登录";&lt;br /&gt;my $pre_url = "http://reg.163.com/servlet/netease.user.Login2Servlet?username=&amp;password=&amp;amp;userip=";&lt;br /&gt;&lt;br /&gt;my $ua = LWP::UserAgent-&gt;new(&lt;br /&gt;   'keep_alive'    =&gt;  30,&lt;br /&gt;   'timeout'       =&gt;  1,&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;#my $sesh = MySes-&gt;connect || die 'EXIT' "Connect mysql err: $!";&lt;br /&gt;&lt;br /&gt;my $logdate = POSIX::strftime("%y%m%d",localtime);&lt;br /&gt;my $statlog = "$LOGDIR/$logname\_$logdate.log";&lt;br /&gt;&amp;InitMyLog($statlog);&lt;br /&gt;&lt;br /&gt;OUTER: while(my $req = new CGI::Fast)&lt;br /&gt;{&lt;br /&gt;   my $cmh;&lt;br /&gt;eval{&lt;br /&gt; my %replace = ();&lt;br /&gt; my $today = POSIX::strftime("%y%m%d",localtime);&lt;br /&gt;   unless($today eq $logdate)&lt;br /&gt;   {&lt;br /&gt;       $logdate = $today;&lt;br /&gt;       $statlog = "$LOGDIR/$logname\_$logdate.log";&lt;br /&gt;       &amp;InitMyLog($statlog);&lt;br /&gt;   }&lt;br /&gt; my $logfile = "$LOGDIR/$logname\_$today.err";&lt;br /&gt; my $sid = $req-&gt;param('sid');&lt;br /&gt; my $username = $req-&gt;param('username');&lt;br /&gt; $username &amp;&amp;amp; ($username = lc $username);&lt;br /&gt; my $password = $req-&gt;param('password');&lt;br /&gt; my $uid=$req-&gt;param('uid');&lt;br /&gt;   my $userip = $ENV{'REMOTE_ADDR'};&lt;br /&gt; #$userip ||= '220.181.31.241';&lt;br /&gt;   my $fullname;&lt;br /&gt;   my $dispname;&lt;br /&gt; unless($uid || $username || $sid)&lt;br /&gt; {&lt;br /&gt;  print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;  PrintPage(\@page_index,\%replace);&lt;br /&gt;  die 'EXIT';&lt;br /&gt; }&lt;br /&gt; if($uid)&lt;br /&gt;   {&lt;br /&gt;  $uid = uri_unescape($uid);&lt;br /&gt;       unless(CheckUid($uid))&lt;br /&gt;       {&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;   #$replace{'errmsg'} = $loginerrmsg;&lt;br /&gt;   #PrintPage(\@page_error,\%replace);&lt;br /&gt;   #Error($loginerrmsg);&lt;br /&gt;   PrintPage(\@page_index,\%replace);&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $username = $uid;&lt;br /&gt;       my $fullname = "$username\@$domain";&lt;br /&gt;       #my $session = MySes-&gt;new($sesh);&lt;br /&gt;       my $session = MySes-&gt;new();&lt;br /&gt;       my $sess_ret = $session-&gt;WriteSes($fullname);&lt;br /&gt;       unless($sess_ret)&lt;br /&gt;       {&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;   Error($errmsg);&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $sid = $session-&gt;GetSid;&lt;br /&gt;   }&lt;br /&gt; elsif($sid)&lt;br /&gt; {&lt;br /&gt;       #my $session = MySes-&gt;new($sesh,$sid);&lt;br /&gt;  my $session = MySes-&gt;new($sid);&lt;br /&gt;       unless($fullname=$session-&gt;CheckSes())&lt;br /&gt;       {&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;   #$replace{'errmsg'} = $loginerrmsg;&lt;br /&gt;   #PrintPage(\@page_error,\%replace);&lt;br /&gt;   Error($loginerrmsg);&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $username = (split(/@/,$fullname))[0];&lt;br /&gt;   }&lt;br /&gt;   elsif($username)&lt;br /&gt;   {&lt;br /&gt;       unless($password)&lt;br /&gt;       {&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;   #$replace{'title'} = $replace{'errmsg'} = "未输入密码";&lt;br /&gt;   #PrintPage(\@page_error,\%replace);&lt;br /&gt;   Error("请输入密码");&lt;br /&gt;           PrintErr($logfile,"$username|password required");&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $username = uri_unescape($username);&lt;br /&gt;       $password = uri_unescape($password);&lt;br /&gt;       if($username =~ /@/)&lt;br /&gt;       {&lt;br /&gt;           $fullname = $username;&lt;br /&gt;           $username = (split(/@/,$fullname))[0];&lt;br /&gt;       }&lt;br /&gt;       my $ret = CheckURSPass($username,$password,$userip);&lt;br /&gt;  print STDERR "$username($password):$ret\n";&lt;br /&gt;       if($ret ne '200')&lt;br /&gt;       {&lt;br /&gt;   if($ret eq '412')&lt;br /&gt;           {&lt;br /&gt;               print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;               PrintErr($logfile,"$username($userip)|CheckPass error too offen");&lt;br /&gt;               Error($loginblockmsg);&lt;br /&gt;               die 'EXIT';&lt;br /&gt;           }&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;   #$replace{'title'} = $replace{'errmsg'} = $loginerrmsg;&lt;br /&gt;   #PrintPage(\@page_error,\%replace);&lt;br /&gt;   Error($loginerrmsg);&lt;br /&gt;           PrintErr($logfile,"$username|CheckPass error");&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       #my $session = MySes-&gt;new($sesh);&lt;br /&gt;       my $session = MySes-&gt;new();&lt;br /&gt;       $fullname = "$username\@$domain";&lt;br /&gt;       $session-&gt;WriteSes($fullname);&lt;br /&gt;       $sid = $session-&gt;GetSid;&lt;br /&gt;   }&lt;br /&gt;   #undef $session;&lt;br /&gt;&lt;br /&gt;# 验证完成&lt;br /&gt;&lt;br /&gt;##############################################################&lt;br /&gt;&lt;br /&gt;   my ($jifen,$level,$rcode);&lt;br /&gt;&lt;br /&gt;   $|=1;&lt;br /&gt;   $fullname = "$username\@$domain";&lt;br /&gt;   WriteLog("Login: $fullname($userip)");&lt;br /&gt;   #my $grade = Grade-&gt;new('192.168.2.106',7788);&lt;br /&gt;   my $grade = new Grade($ua);&lt;br /&gt;   eval{&lt;br /&gt;       unless($grade){&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = "积分对象创建失败";&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = $errmsg;&lt;br /&gt;           #PrintPage(\@page_error,\%replace);&lt;br /&gt;           Error($errmsg);&lt;br /&gt;           PrintErr($logfile,"Can't new Grade:$!");&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       my $ret = $grade-&gt;Query($fullname);&lt;br /&gt;       unless($ret){&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = "服务器内部通信失败";&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = $errmsg;&lt;br /&gt;           #PrintPage(\@page_error,\%replace);&lt;br /&gt;           Error($errmsg);&lt;br /&gt;           PrintErr($logfile,"Can't connect to server:$!");&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $rcode = $grade-&gt;rcode;&lt;br /&gt;       if($rcode &lt;= 0)&lt;br /&gt;       {&lt;br /&gt;           print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = "数据库出错";&lt;br /&gt;           #$replace{'title'} = $replace{'errmsg'} = $errmsg;&lt;br /&gt;           #PrintPage(\@page_error,\%replace);&lt;br /&gt;           Error($errmsg);&lt;br /&gt;           PrintErr($logfile,"$username|DB server error: $rcode");&lt;br /&gt;           die 'EXIT';&lt;br /&gt;       }&lt;br /&gt;       $jifen = $grade-&gt;grade;&lt;br /&gt;       $level = $grade-&gt;level;&lt;br /&gt;   };&lt;br /&gt; if($@){&lt;br /&gt;       $jifen = '系统繁忙';&lt;br /&gt;       $level = 0;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   my $uinfo = UserInfo-&gt;new($ua,$fullname);&lt;br /&gt;   if($uinfo)&lt;br /&gt;   {&lt;br /&gt;       my %user_info = $uinfo-&gt;QueryBatch('nickname','realname');&lt;br /&gt;       if( %user_info &amp;&amp;amp; $user_info{'rcode'}&gt;=-1 )&lt;br /&gt;       {&lt;br /&gt;           $dispname ||= $user_info{'nickname'};&lt;br /&gt;           $dispname ||= $user_info{'realname'};&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;   #print STDERR "here $username\n";&lt;br /&gt;   $dispname ||= $username;&lt;br /&gt;&lt;br /&gt; # 页面输出&lt;br /&gt;   $replace{'uname'} = $dispname;&lt;br /&gt;   $replace{'sid'} = $sid;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   $replace{'jifen'} = $jifen;&lt;br /&gt;   $replace{'level'} = $level;&lt;br /&gt;&lt;br /&gt;=head_暂不提供用户查询&lt;br /&gt;   $replace{'jifen'} = 0;&lt;br /&gt;   $replace{'level'} = '&lt;img src="http://mimg.163.com/jsstyle/icon/jifen/jf_null.gif" border="0" /&gt;';&lt;br /&gt;=cut&lt;br /&gt;&lt;br /&gt;   my $cookie_jifen = new CGI::Cookie(-name=&gt;"jifen_$username",-value=&gt;$jifen,-domain=&gt;'mail.163.com');&lt;br /&gt;   my $cookie_level = new CGI::Cookie(-name=&gt;"level_$username",-value=&gt;$level,-domain=&gt;'mail.163.com');&lt;br /&gt; my $cookie_name = new CGI::Cookie(-name=&gt;'name',-value=&gt;$dispname,-domain=&gt;'mail.163.com');&lt;br /&gt;   #my $cookie_sid = new CGI::Cookie(-name=&gt;'grade_sid',-value=&gt;$sid);&lt;br /&gt;  &lt;br /&gt; print $req-&gt;header(-charset=&gt;'gb2312',-cookie=&gt;[$cookie_jifen,$cookie_level,$cookie_name]);&lt;br /&gt;   PrintPage(\@page_login,\%replace);&lt;br /&gt;};&lt;br /&gt;if($@){&lt;br /&gt;   unless($@ =~ /EXIT/){&lt;br /&gt;       my %replace = ();&lt;br /&gt;       print $req-&gt;header(-charset=&gt;'gb2312');&lt;br /&gt;       PrintPage(\@page_index,\%replace);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub handle_term&lt;br /&gt;{&lt;br /&gt; #next OUTER;&lt;br /&gt;=head&lt;br /&gt; if($sesh)&lt;br /&gt;   {&lt;br /&gt;       $sesh-&gt;disconnect;&lt;br /&gt;   }&lt;br /&gt;=cut&lt;br /&gt;   print CGI::header;&lt;br /&gt; exit(0);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-116473493147774079?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jifen.mail.163.com/cgi-bin/163/login.fcgi' title='网易赤果果'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/116473493147774079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=116473493147774079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473493147774079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116473493147774079'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/11/blog-post.html' title='网易赤果果'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-116430240283650666</id><published>2006-11-23T08:22:00.000-08:00</published><updated>2006-11-23T09:20:03.216-08:00</updated><title type='text'>BioPerl果然包罗万象</title><content type='html'>检索了文档后，又仔细Google了一番，发现Bio::SeqIO居然可以支持ABI测序文件。当然，必须安装bioperl-ext扩展，里面的statden模块是必须的。而且代码是C语言内嵌于Perl中的，需要合适的编译器（对于Win32尤为重要）。效果未知。手头没有abi trace，遂作罢。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-116430240283650666?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/116430240283650666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=116430240283650666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116430240283650666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116430240283650666'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/11/bioperl.html' title='BioPerl果然包罗万象'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-116007188335647150</id><published>2006-10-05T11:11:00.000-07:00</published><updated>2006-10-05T11:12:50.276-07:00</updated><title type='text'>Regexp::Common::Profanity</title><content type='html'>你在Google Code Search里可以搜到&lt;a href="http://zhcn.blogspot.com/2006/10/crap-google-code-search.html"&gt;各种各样的牢骚、粗口或者脏话&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;然后你会发现CPAN上居然也有。不过仔细一看，其中有一个模块名正言顺的收录了许多脏话。它就是Regexp::Common::Profanity。&lt;br /&gt;&lt;br /&gt;这个包是专门用来检测文字、名字、邮箱地址中不雅的和冒犯的词句的。作者为过滤各种外国脏字煞费苦心，不但要考虑空格，还有模糊的读音、拼写以及类似ASCIIART的替换。不知道包括不包括“口禾言皆”之类的情况。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-116007188335647150?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/116007188335647150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=116007188335647150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116007188335647150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/116007188335647150'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/10/regexpcommonprofanity.html' title='Regexp::Common::Profanity'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115813178646062215</id><published>2006-09-13T00:16:00.001-07:00</published><updated>2006-09-13T00:16:26.476-07:00</updated><title type='text'>Pugs: Interview: Perl 6 on Perl 5</title><content type='html'>登在Pugs官方blog的采访&lt;a href="http://pugs.blogs.com/pugs/2006/09/status_report_p.html"&gt;Pugs: Interview: Perl 6 on Perl 5&lt;/a&gt;中，负责开发v6模块的 &lt;a href="http://search.cpan.org/%7Efglock/"&gt;Flávio Soibelmann Glock&lt;/a&gt;（fglock）透露了许多v6开发的情况：&lt;br /&gt;&lt;br /&gt;总体上，最终目标——v6-Compiler模块（v6/v6-Compiler），用Perl6实现Perl6。&lt;br /&gt;&lt;div class="entry-more"&gt;&lt;br /&gt;“v6.pm”是一个自举编译器（perl5/Pugs-Compiler-Perl6）。这意味着v6.pm在Perl 6能自己编译自己前，被用作编译Perl 6的编译器。&lt;br /&gt;&lt;br /&gt;v6.pm使用了数个CPAN模块：&lt;a href="http://search.cpan.org/dist/Pugs-Compiler-Rule/"&gt;Pugs::Compiler::Rule&lt;/a&gt; (regexes)， &lt;a href="http://search.cpan.org/dist/Data-Bind/"&gt;Data::Bind&lt;/a&gt; (signatures)， &lt;a href="http://search.cpan.org/dist/Moose/"&gt;Moose&lt;/a&gt; (objects)，&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://search.cpan.org/dist/Parse-Yapp/"&gt;Parse::Yapp&lt;/a&gt; (precedence parser)。&lt;br /&gt;&lt;br /&gt;这个模块目前通过了Perl 6测试套件的10%。它提供了语言的基础：语句，表达式，还有类。它还包括正则表达式和语法，这些也是编写编译器所需的。   &lt;p&gt;编译器的若干部分用Perl 6编写，用v6.pm自身编译。CPAN上的Pugs::Compiler::Rule模块的语法用Perl 6编写，用v6.pm编译成Perl 5。&lt;/p&gt;&lt;p&gt;&lt;em&gt;性能：&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;编译速度是100行每秒，代码有缓存——只编译一次。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;生产的代码已经相当的优化，运行在perl5的速度上。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;最终目标&lt;/span&gt;&lt;br /&gt;&lt;p&gt;v6.pm 的目标是能够编译“真正”的v6-Compiler(p6-on-p6)。但是，因为v6.pm必须“足够正确”和“足够快”，它也能用来编写一般用途的模块或程序。&lt;/p&gt;  &lt;p&gt;&lt;em&gt;所使用的“.pmc”文件的角色&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;".pmc"被用于perl5缓存文件。Perl5同时找到".pm"和".pmc"文件，它执行".pmc"文件。 &lt;/p&gt;  &lt;p&gt;当v6.pm编译一个".pm"时，它把perl 5代码dump下来作为".pmc"。下次执行，perl5会加载编译后的版本。这将变得很快。&lt;/p&gt;   &lt;p&gt;&lt;em&gt;v6项目是帮助继续用Perl5的人还是针对想要用Perl 6的人？&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;主要是为了perl5程序员，保证Perl5可以兼容Perl 6—双向兼容。&lt;/p&gt;&lt;p&gt;Perl5 程序员可以直接使用底层模块——Moose，和Pugs::Compiler::Rule——v6.pm就是“syntax layer”。&lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;哪部分Perl 6不可能依此实现？&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;一些perl6功能可能在perl5中很缓慢——如协同进程，但并非不可能。&lt;/p&gt;  &lt;p&gt;&lt;em&gt;如何尽早尝试Perl 6?&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;从CPAN安装v6，依赖的模块可以自动补完。&lt;br /&gt;&lt;p&gt;一些模块，如PadWalker和Data::Bind需要C编译器。Windows用户可以用 &lt;a href="http://vanillaperl.com/"&gt;vanilla-perl发行版&lt;/a&gt;，它带有C编译器。&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;如何参与和帮助&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;到freenode的#perl6频道来。&lt;/p&gt;&lt;/div&gt;      &lt;!-- technorati tags --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115813178646062215?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pugs.blogs.com/pugs/2006/09/status_report_p.html' title='Pugs: Interview: Perl 6 on Perl 5'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115813178646062215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115813178646062215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115813178646062215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115813178646062215'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/09/pugs-interview-perl-6-on-perl-5_13.html' title='Pugs: Interview: Perl 6 on Perl 5'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115803169329833739</id><published>2006-09-11T20:26:00.000-07:00</published><updated>2006-09-11T20:28:13.306-07:00</updated><title type='text'>Devel::DProf - a Perl code profiler</title><content type='html'>使用方法：&lt;br /&gt;perl -d:DProf test.pl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115803169329833739?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115803169329833739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115803169329833739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115803169329833739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115803169329833739'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/09/develdprof-perl-code-profiler.html' title='Devel::DProf - a Perl code profiler'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115798804573108110</id><published>2006-09-11T08:19:00.000-07:00</published><updated>2006-09-11T08:20:45.743-07:00</updated><title type='text'>UTF8下中文处理</title><content type='html'>发信人: happierbee (吾生也有涯，而知也无涯), 信区: Perl&lt;br /&gt;标  题: UTF8下中文处理&lt;br /&gt;发信站: 水木社区 (Mon Sep 11 21:22:53 2006), 站内&lt;br /&gt;&lt;br /&gt;我来总结一下吧。先建一个文件，写上 中文 两个字。运行下面一个程序：&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Encode;&lt;br /&gt;my $str_code = "中文";&lt;br /&gt;my $file = "test.txt";&lt;br /&gt;&lt;br /&gt;open(my $fh, $file) || die "Can't open file $file: $!";&lt;br /&gt;chomp(my $str_file = &lt;$fh&gt;);&lt;br /&gt;close $fh;&lt;br /&gt;&lt;br /&gt;open(my $fh_utf8, "&lt;:utf8", $file) || die "Can't open file $file: $!";&lt;br /&gt;chomp(my $str_fileu = &lt;$fh_utf8&gt;);&lt;br /&gt;close $fh_utf8;&lt;br /&gt;&lt;br /&gt;test_utf8($str_code, "code");&lt;br /&gt;test_utf8($str_file, "file");&lt;br /&gt;test_utf8($str_fileu, "file(utf8 layer)");&lt;br /&gt;# print $str_code, "\n";&lt;br /&gt;# print $str_file, "\n";&lt;br /&gt;# print $str_fileu, "\n";&lt;br /&gt;&lt;br /&gt;Encode::_utf8_on($str_code);&lt;br /&gt;Encode::_utf8_on($str_file);&lt;br /&gt;test_utf8($str_code, "code");&lt;br /&gt;test_utf8($str_file, "file");&lt;br /&gt;&lt;br /&gt;sub test_utf8 {&lt;br /&gt;    my ($str, $type) = @_;&lt;br /&gt;    if ( Encode::is_utf8($str) ) {&lt;br /&gt;        print "String from $type, utf8 flag is on."&lt;br /&gt;    } else {&lt;br /&gt;        print "String from $type, utf8 flag is off."&lt;br /&gt;    }&lt;br /&gt;    my @chars = split('', $str);&lt;br /&gt;    # print join("\t", @chars), "length: ", scalar(@chars);&lt;br /&gt;    if (scalar(@chars)==2) {&lt;br /&gt;        print " Can match chinese character.";&lt;br /&gt;    } else {&lt;br /&gt;        print " Can't match chinese character.";&lt;br /&gt;    }&lt;br /&gt;    print "\n";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;结果如下：&lt;br /&gt;String from code, utf8 flag is off. Can't match chinese character.&lt;br /&gt;String from file, utf8 flag is off. Can't match chinese character.&lt;br /&gt;String from file(utf8 layer), utf8 flag is on. Can match chinese character.&lt;br /&gt;Turn on utf flag:&lt;br /&gt;String from code, utf8 flag is on. Can match chinese character.&lt;br /&gt;String from file, utf8 flag is on. Can match chinese character.&lt;br /&gt;&lt;br /&gt;所以如果要想使用汉字作为一个字符的特性，就要在 open 里指明 io layer 为&lt;br /&gt;utf8，同样，输出指明 utf8，然后在脚本里写 use utf8。&lt;br /&gt;这样你就不用担心 utf8 下的乱码，又能享受汉字做为一个字符来写正则表达式的&lt;br /&gt;的畅快。&lt;br /&gt;如果不知道我上面说的意思，我就给一个例子：&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Encode;&lt;br /&gt;use utf8;&lt;br /&gt;&lt;br /&gt;my $file = "test.txt";&lt;br /&gt;my $outfile = "test-out.txt";&lt;br /&gt;# open(my $fh, $file) || die "Can't open file $file: $!";&lt;br /&gt;# open(my $out, '&gt;:utf8', $outfile) || die "Can't open file $outfile: $!";&lt;br /&gt;# select $out;&lt;br /&gt;open(my $fh, '&lt;:utf8', $file) || die "Can't open file $file: $!";&lt;br /&gt;binmode STDOUT, ":utf8";&lt;br /&gt;while (&lt;$fh&gt;) {&lt;br /&gt;    if (/[汉]/) {&lt;br /&gt;        unless (Encode::is_utf8($_)) {&lt;br /&gt;            Encode::_utf8_on($_);&lt;br /&gt;        }&lt;br /&gt;        print $_;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;test.txt 中的内容是："求\n汉\n汁\n汗\n汕\n江\n"（每个汉字一行的意思）。&lt;br /&gt;这个例子中，有好几个组合：&lt;br /&gt;1. 不使用 utf8 指令，open 中也不使用 utf8。&lt;br /&gt;这时所有行都匹配。因为正则表达式中是三个字节（我假定你也用 utf8 来编码&lt;br /&gt;代码，如果不是，可以不匹配任何行），而所有输入的行中都含有这三个字节中&lt;br /&gt;的一个，事实上 test.txt 是我精心挑选的，前两个字节都相同的汉字。&lt;br /&gt;2. 不使用 utf8 指令, open 中使用 utf8.&lt;br /&gt;不能匹配任何行。因为输入文件中是汉字，而正则表达式是三个字节。&lt;br /&gt;3. 使用 utf8 指令，open 中不使用 utf8&lt;br /&gt;也不能匹配任何行。因为正则表达式中是一个汉字，而输入文件是一个个的字节。&lt;br /&gt;4. 使用 utf8 指令，open 中也使用 utf8&lt;br /&gt;正确匹配一行。&lt;br /&gt;&lt;br /&gt;至于输出的 warning，这确实这是一个小小的 warning，不会影响结果。如果不&lt;br /&gt;想有这个 warning，最好的办法是用 binmode 或者在 open 中指定使用 utf8&lt;br /&gt;layer。或者对于 warning 的字符串用 Encode 模块中 _utf8_on 函数，强制&lt;br /&gt;加上 utf8 flag.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【 在 happierbee (吾生也有涯，而知也无涯) 的大作中提到: 】&lt;br /&gt;&lt;span class="f006"&gt;: 这个实在不好形容是什么错误呀。改成这个标题好点没？&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115798804573108110?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115798804573108110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115798804573108110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115798804573108110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115798804573108110'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/09/utf8.html' title='UTF8下中文处理'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115683767166513467</id><published>2006-08-29T00:25:00.000-07:00</published><updated>2006-08-29T00:48:54.396-07:00</updated><title type='text'>vi,sed,perl的正则表达式替换</title><content type='html'>VIM：&lt;br /&gt;:1,5s/pattern/string/gi   1到5行&lt;br /&gt;:%s/pattern/string/gi&lt;br /&gt;&lt;br /&gt;sed:&lt;br /&gt;sed -e s/pattern/string/gi originalfile &gt; newfile #in FreeBSD: -E&lt;br /&gt;&lt;br /&gt;perl:&lt;br /&gt;#overwrite:&lt;br /&gt;perl -pi -e ’s/bar/baz/’ fileA&lt;br /&gt;perl -pi’*’ -e ’s/bar/baz/’ fileA&lt;br /&gt;#backup to 'fileA.orig'&lt;br /&gt;perl -pi’.orig’ -e ’s/bar/baz/’ fileA&lt;br /&gt;perl -pi’*.orig’ -e ’s/bar/baz/’ fileA&lt;br /&gt;#stdout&lt;br /&gt;perl -pe ’s/bar/baz/’ fileA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115683767166513467?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115683767166513467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115683767166513467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115683767166513467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115683767166513467'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/visedperl.html' title='vi,sed,perl的正则表达式替换'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115678178044832631</id><published>2006-08-28T09:07:00.000-07:00</published><updated>2006-08-28T09:16:20.480-07:00</updated><title type='text'>url encode and url decode in Perl</title><content type='html'>&lt;div id="more" class="entry-more"&gt;url-encode:&lt;br /&gt;$str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;&lt;br /&gt;url-decode:&lt;br /&gt;$str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.chedong.com/blog/archives/000224.html"&gt;Onliner's:&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Urlencode：对 \n 不转码&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2x",ord($1))/eg' keywords.list&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;UrlDecode：&lt;br /&gt;&lt;span style="font-size:78%;"&gt;perl -p -e 's/%(..)/pack("c", hex($1))/eg' query.log&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;                              &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115678178044832631?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chedong.com/blog/archives/000224.html' title='url encode and url decode in Perl'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115678178044832631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115678178044832631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115678178044832631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115678178044832631'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/url-encode-and-url-decode-in-perl.html' title='url encode and url decode in Perl'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115678038920183707</id><published>2006-08-28T07:57:00.000-07:00</published><updated>2006-08-28T09:01:00.460-07:00</updated><title type='text'>Really advanced perl RegEx reference</title><content type='html'>* Samples&lt;br /&gt;交换两项位置&lt;br /&gt;s/(\S+)\s+(\S+)/$2 $1/&lt;br /&gt;&lt;br /&gt;搜索C语言标识符&lt;br /&gt;m/[_A-Za-z][_A-Za-z0-9]*/&lt;br /&gt;m/[_[:alpha:]][_[:alnum:]]*/&lt;br /&gt;&lt;br /&gt;空行&lt;br /&gt;/^$/&lt;br /&gt;&lt;br /&gt;单词&lt;br /&gt;\b\w+\b&lt;br /&gt;&lt;br /&gt;* Questions&lt;br /&gt;&lt;br /&gt;* Reference&lt;br /&gt;perlre (bytes and utf8)&lt;br /&gt;regex.h (regcomp regexec regfree regerror) (single byte only)&lt;br /&gt;java (unicode only)&lt;br /&gt;python (bytes and unicode)&lt;br /&gt;&lt;br /&gt;*基本结构&lt;br /&gt;&lt;br /&gt;*语法&lt;br /&gt;m/regex/ismx&lt;br /&gt;s/regex/replacement/ismxg&lt;br /&gt;&lt;br /&gt;*修饰符&lt;br /&gt;i 大小写一视同仁&lt;br /&gt;s 单行模式 (.能够匹配所有的东东)&lt;br /&gt;m 多行模式 (只影响 ^ $，使其匹配一个字符串内的多个行首／行尾)&lt;br /&gt;x 允许空格和注释 (针对perl 有效)&lt;br /&gt;g 全部（替换）&lt;br /&gt;&lt;br /&gt;*等价&lt;br /&gt;m/ABC|XYZ/&lt;br /&gt;&lt;br /&gt;*序列&lt;br /&gt;m/ABC/&lt;br /&gt;&lt;br /&gt;*重复&lt;br /&gt;(agressive)&lt;br /&gt;a? 0 or 1&lt;br /&gt;a* 0 or more&lt;br /&gt;a+ 1 or more&lt;br /&gt;a{m} m&lt;br /&gt;a{m,} m or more&lt;br /&gt;a{m,n} m to n (inclusively)&lt;br /&gt;&lt;br /&gt;(懒惰)&lt;br /&gt;a??&lt;br /&gt;a*?&lt;br /&gt;a+?&lt;br /&gt;a{m}?&lt;br /&gt;a{m,}?&lt;br /&gt;a{m,n}?&lt;br /&gt;&lt;br /&gt;aa&lt;br /&gt;(a?)(a*) $1 =&amp;gt; a a&lt;br /&gt;(a??)(a*) $1 =&amp;gt; "" aa&lt;br /&gt;&lt;br /&gt;*原子&lt;br /&gt;Character = a b c&lt;br /&gt;Character Class&lt;br /&gt;Escape = \ + non-alpha, such as \\, \+, \(, except reference&lt;br /&gt;Meta Escape= \ + alpha[a-zA-Z]&lt;br /&gt;Groups = (...)&lt;br /&gt;&lt;br /&gt;* Character Class&lt;br /&gt;[abc] [a-b] [^abc] [^abc0-9]&lt;br /&gt;[- and [] are considered literal&lt;br /&gt;[-a] = - or a&lt;br /&gt;[^\-]&lt;br /&gt;&lt;br /&gt;[[]&lt;br /&gt;[]]&lt;br /&gt;[ ]&lt;br /&gt;&lt;br /&gt;* Posix Character Class&lt;br /&gt;[[.a.]] collation&lt;br /&gt;[[=a=]] equivalence&lt;br /&gt;[[:alpha:]]&lt;br /&gt;&lt;br /&gt;* Meta&lt;br /&gt;. anything except newlines (normal mode)&lt;br /&gt;. anything (s mode, singleline, dotall)&lt;br /&gt;^ start of string, or start of line (m mode)&lt;br /&gt;$ end of string (including newline), or end of line (m mode)&lt;br /&gt;&lt;br /&gt;* Meta Escape&lt;br /&gt;\t \n \r \f \a \e&lt;br /&gt;\0nn \xnn 分别是八进制和16进制&lt;br /&gt;\cA (using algorithm ch ^ 0x40)&lt;br /&gt;\cM&lt;br /&gt;\N{name}&lt;br /&gt;\l lowercase next char&lt;br /&gt;\u uppercase next char&lt;br /&gt;\L...\E lowercase until \E&lt;br /&gt;\U...\E uppercase until \E&lt;br /&gt;\Q...\E quote until \E&lt;br /&gt;\w \W word char&lt;br /&gt;\s \S space&lt;br /&gt;\d \D digit&lt;br /&gt;\b \B boundary&lt;br /&gt;\p{property}&lt;br /&gt;\P{property}&lt;br /&gt;\X combining character sequence&lt;br /&gt;\C single byte (perl)&lt;br /&gt;\&amp;lt;&amp;gt; end of word (emacs)&lt;br /&gt;&lt;br /&gt;* Groups&lt;br /&gt;(abc) for capture group&lt;br /&gt;&lt;br /&gt;* Special group&lt;br /&gt;(?#comment)&lt;br /&gt;(?imsx-imsx) embedded flags&lt;br /&gt;(?:pattern) for non-capture&lt;br /&gt;(?imsx-imsx:pattern) subpattern&lt;br /&gt;(?=pattern) positive look ahead&lt;br /&gt;(?!pattern) negative look ahead&lt;br /&gt;(?&amp;lt;=pattern) positive look behind&lt;br /&gt;(?&amp;lt;!pattern) negative look behind&lt;br /&gt;&lt;br /&gt;* Reference for capture&lt;br /&gt;m/(x)\1/&lt;br /&gt;s/(x)/$1$1/&lt;br /&gt;&lt;br /&gt;*传统 vs 扩展&lt;br /&gt;\{m,n\} vs {m,n}&lt;br /&gt;\(xxx\) vs (xxx)&lt;br /&gt;Emacs is still using traditional regular expression&lt;br /&gt;&lt;br /&gt;* 特殊扩展&lt;br /&gt;\&amp;lt;&amp;gt; end of word (emacs)&lt;br /&gt;&lt;br /&gt;*换行&lt;br /&gt;&lt;br /&gt;\n \v \r \r\n \f \x85 \x2028 \x2029 \x1A&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115678038920183707?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chedong.com/blog/archives/000631.html' title='Really advanced perl RegEx reference'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115678038920183707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115678038920183707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115678038920183707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115678038920183707'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/really-advanced-perl-regex-reference.html' title='Really advanced perl RegEx reference'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115677573731756269</id><published>2006-08-28T07:23:00.000-07:00</published><updated>2006-08-28T07:35:37.336-07:00</updated><title type='text'>Sed 与 Linux 等价命令代码鉴赏</title><content type='html'>&lt;code&gt;&lt;br /&gt;basename                        sed 's/\(.*\)\/\([^/]*\)/\2/'          or   sed 's,.*/,,'&lt;br /&gt;cat                             sed '' or  sed -n '1,$p'           or   sed '1,$!d'&lt;br /&gt;cat -s                          sed '/./,/^$/!d'&lt;br /&gt;cat -n                          sed '=' | sed 'N;s/\n/\t/;s/^/    &amp;/'   or  sed '=' | sed '$!N;s/\n/ /'&lt;br /&gt;cat -E                          sed 's/$/\$/'&lt;br /&gt;cat -t                           sed 's/\t/^I/g'&lt;br /&gt;cut -c n                        sed 's/\(.\)\{n\}.*/\1/'              or   sed 's/^.\{(n-1)\}//g;s/\(.\)\(.*\)/\1/g'&lt;br /&gt;cut -c x-y                      sed 's/\(^.\{y\}\)\(.*\)/\1/g;s/^.\{(x-1)\}//'&lt;br /&gt;cut -d| -f6                      sed 's/\(\([^|]*\)\|\)\{6\}.*/\2/'&lt;br /&gt;cp file1 file2                    sed 'w file2' file1&lt;br /&gt;expand -t 1                     sed 's/\t/ /g'&lt;br /&gt;dirname                         sed 's/\(.*\)\/\([^/]*\)/\1/'          or    sed 's,[^/]*$,,'&lt;br /&gt;grep patten                      sed -n '/patten/p'                or    sed '/patten/!d'&lt;br /&gt;grep -v patten                   sed -n '/patten/!p'                or    sed '/pateen/d'&lt;br /&gt;grep -n patten                   sed -n '/patten/{=;p}'| sed 'N;s/\n/:/'&lt;br /&gt;head                            sed -n '1,10p'&lt;br /&gt;head -1                         sed -n '1p'                     or      sed 'q'&lt;br /&gt;head -Number                    sed '1,Number!d'                or      sed 'Numberq'&lt;br /&gt;paste -s file1 file2                sed ':a;N;s/\n/\t/;ba;' file1 file2 | sed 's/\t\t/\n/'&lt;br /&gt;paste -sdstr                      sed ':a;N;s/\n/str/;ba'&lt;br /&gt;rev                             sed '/\n/!G;s/\(.\)\(.*\n\)/&amp;\2\1/;//D;s/.//'&lt;br /&gt;tac                             sed -n '1! G;$p;h'                or      sed -n 'G;$p;h'&lt;br /&gt;tail -1                          sed -n '$p'                      or      sed '$!d'&lt;br /&gt;tail -Number                    sed ':t;$q;N;(Number+1),$D;bt'&lt;br /&gt;tail -f                          sed -u '/./!d'&lt;br /&gt;tr "\n" " "                      sed ':a;N;s/\n/ /;ba'&lt;br /&gt;tr "A-Z" "a-z"                   sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'&lt;br /&gt;tr "a-z" "A-Z"                   sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'&lt;br /&gt;tr -d "12"                    sed ':a;N;s/\n//;ba'       or      sed ':a;N;s/\(^.\)*\n\(.*\)/\2\1/;ba'&lt;br /&gt;tr -s 'x'                        sed 's/\(x\)\(x\{1,\}\)/\1/'&lt;br /&gt;tr -s ' '                        sed 's/ \+/ /g'&lt;br /&gt;uniq -u                        sed '$b;N;/^\(.*\)\n\1$/ ! {P;D};:c;$d;s/.*\n//;N;/^\(.*\)\n\1$/{bc};D'&lt;br /&gt;uniq                           sed 'N;/^\(.*\)\n\1$/!P;D'&lt;br /&gt;wc -l                          sed -n '$='&lt;br /&gt;wc -c                         sed ':a;s/./&amp;\n/;P;D;/.\{2,\}\n/ba' t|sed -n '$='&lt;br /&gt;wc -w                         sed 's/ /\n/g' | sed -n '$='&lt;br /&gt;xargs                          sed ':a;N;s/\n/ /;ba'       or      sed -e ':a' -e '$!N;s/\n/ /;ta'&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115677573731756269?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115677573731756269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115677573731756269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115677573731756269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115677573731756269'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/sed-linux.html' title='Sed 与 Linux 等价命令代码鉴赏'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115643521006797163</id><published>2006-08-24T09:00:00.000-07:00</published><updated>2006-08-24T09:00:10.133-07:00</updated><title type='text'>请别再用Perl 3了 - O'Reilly ONLamp Blog</title><content type='html'>&lt;a href="http://www.oreillynet.com/onlamp/blog/2006/08/please_stop_using_perl_3.html"&gt;Please Stop Using Perl 3 - O'Reilly ONLamp Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;这篇文章的作者Curtis Poe的立意十分明确：为Perl辩护。因为Perl批判者经常抱怨：1.Perl的scalability不好，2.Perl的代码写写可以，就是没法读。&lt;br /&gt;&lt;br /&gt;Poe强调了开发中被新手和业余程序员忽略的“separation of concerns, loose coupling and cohesive functions”。并举例说明perl支撑的应用之强健。&lt;br /&gt;&lt;br /&gt;当然，Python的死忠分子自然可以继续攻击perl的易读性，不过，Poe认为“随便拿一段PHP代码，程序员一眼看过，也分不清是PHP还是Perl。倒是没什么人抱怨PHP难读”。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115643521006797163?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.oreillynet.com/onlamp/blog/2006/08/please_stop_using_perl_3.html' title='请别再用Perl 3了 - O&apos;Reilly ONLamp Blog'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115643521006797163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115643521006797163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115643521006797163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115643521006797163'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/perl-3-oreilly-onlamp-blog.html' title='请别再用Perl 3了 - O&apos;Reilly ONLamp Blog'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115510561997377661</id><published>2006-08-08T23:35:00.001-07:00</published><updated>2006-08-08T23:40:19.973-07:00</updated><title type='text'>PXPerl 5.8.7-6的cpan模块编译</title><content type='html'>使用CPAN+MinGW编译模块，发现无法通过，后来发现，&lt;a href="http://pxperl.com/"&gt;PXPerl&lt;/a&gt; 5.8.7-6在发布时少了个libperl58.a。重大失误啊！害得我干着急了两天！解决起来，唯一的办法还是把缺少的文件&lt;a href="http://download.pxperl.com/"&gt;下载&lt;/a&gt;并保存到正确位置（PXPerl\lib\CORE\）。就这么简单！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115510561997377661?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115510561997377661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115510561997377661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510561997377661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510561997377661'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/pxperl-587-6cpan.html' title='PXPerl 5.8.7-6的cpan模块编译'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115510530384710994</id><published>2006-08-08T23:35:00.000-07:00</published><updated>2006-08-08T23:35:03.866-07:00</updated><title type='text'>让Encode::HanExtra起作用--chaoslawful的笔记</title><content type='html'>&lt;a href="http://chaoslawful.blogchina.com/1900499.html"&gt;让Encode::HanExtra起作用--chaoslawful的笔记&lt;/a&gt;: "为了支持GB18030编码需要从CPAN上安装Encode::HanExtra模块，但Perl发行版本默认的Encode模块设置没有打开对HanExtra的支持，装了该模块也暂时无法使用GB18030编码。让模块有效的修改方法是：&lt;br /&gt;修改Perl发行版的lib/Encode/Config.pm文件，其中的%ExtModule散列表定义了不同的编码对应的模块名称，搜索后会发现包括gb18030在内的几个编码对应的行被注释了，装完Encode::HanExtra模块以后手工去掉这几个注释即可。"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115510530384710994?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://chaoslawful.blogchina.com/1900499.html' title='让Encode::HanExtra起作用--chaoslawful的笔记'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115510530384710994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115510530384710994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510530384710994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510530384710994'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/encodehanextra-chaoslawful.html' title='让Encode::HanExtra起作用--chaoslawful的笔记'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115510094506462719</id><published>2006-08-08T22:22:00.000-07:00</published><updated>2006-08-08T22:22:25.100-07:00</updated><title type='text'>blogspot的ip的确是66.102.15.101啊！</title><content type='html'>也许你今天暂时又可以访问blogspot.com上的blog了。不过不要高兴的太早，也许这又是由于暂时更换ip导致&lt;a href="zh.wikipedia.org/wiki/GFW"&gt;gfw&lt;/a&gt;慢半拍造成的假象。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115510094506462719?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kenwong.cn/post/blogger-dot-com-again-unblocked.html' title='blogspot的ip的确是66.102.15.101啊！'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115510094506462719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115510094506462719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510094506462719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115510094506462719'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/blogspotip6610215101.html' title='blogspot的ip的确是66.102.15.101啊！'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115504778455643753</id><published>2006-08-08T07:35:00.000-07:00</published><updated>2006-08-08T07:40:42.313-07:00</updated><title type='text'>A photo test</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rogerwendell.com/images/perl/perl_logo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://www.rogerwendell.com/images/perl/perl_logo.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115504778455643753?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115504778455643753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115504778455643753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115504778455643753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115504778455643753'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/photo-test.html' title='A photo test'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115498863453128845</id><published>2006-08-07T15:09:00.000-07:00</published><updated>2006-08-07T15:13:55.530-07:00</updated><title type='text'>摘录</title><content type='html'>&lt;a href="http://www.jeffhung.net/blog/articles/jeffhung/417/"&gt; Perl with UTF-8 mode&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.devshed.com/c/a/Perl/Parsing-a-Querystring-With-Perl/1/"&gt;Parsing a Querystring With Perl - A Simple ISINDEX Query (Page 2 of 3 )&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.hyperborea.org/journal/archives/2004/06/19/whats-in-a-user-agent-string/"&gt;What’s in a User-Agent String?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115498863453128845?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115498863453128845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115498863453128845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498863453128845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498863453128845'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/blog-post_07.html' title='摘录'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115498849297133609</id><published>2006-08-07T14:46:00.000-07:00</published><updated>2006-08-07T15:08:13.010-07:00</updated><title type='text'>Have fun with google: detect encoding of a meaningful string</title><content type='html'>Mozilla有一套概率机制保证编码检测的准确,尤其是中日韩这样的大字符集. 其原理无非就是利用各个字符集的文字统计上出现频率的倒排表,比对目标文本中的频率,从而猜测文本的编码归属.&lt;br/&gt;&lt;br/&gt;而google拥有全世界最大的可公开访问的网页数据库,从而形成了最为专业的文本检索排序的系统.如果利用google,检索某一个短字符串（比如由于各种原因常常混淆的中日韩MP3 id3标签）,则有可能根据匹配的记录数推断文本到底属于哪个字符集.&lt;br/&gt;&lt;br/&gt;由于id3字符串通常较短, 如果出现大量生僻字,则可能给单独依靠个别文字的识别带来麻烦.而依靠文字组合的概率模型,在本地实现较复杂,需要更大的存储空间,且不能跟踪时代潮流,造成升级的困扰,而google的数据库实时更新,且结果具有实际意义.综上,这些因素给利用google检索条目总数的判别方法留出空间.&lt;br/&gt;&lt;br/&gt;实现：&lt;br/&gt;&lt;ol&gt;&lt;li&gt;得到MP3 id3tag字符串&lt;br/&gt;&lt;/li&gt;&lt;li&gt;将字符串分别按utf8, cp936, big5, euc-jp, euc-kr解码（得到utf8的测试编码）&lt;/li&gt;&lt;li&gt;分别将不同的测试编码提交给google.com,进行搜索&lt;/li&gt;&lt;li&gt;得到条目总数,取最多者&lt;/li&gt;&lt;/ol&gt;Todo:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;对得到正确的id3tag（ v1/v2）的能力进行测试&lt;br/&gt;&lt;/li&gt;&lt;li&gt;对正确地生成请求的url的测试&lt;/li&gt;&lt;li&gt;对不同编码的判断结果进行大规模验证&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115498849297133609?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115498849297133609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115498849297133609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498849297133609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498849297133609'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/have-fun-with-google-detect-encoding.html' title='Have fun with google: detect encoding of a meaningful string'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115498333133142128</id><published>2006-08-07T13:40:00.000-07:00</published><updated>2006-08-07T13:42:11.343-07:00</updated><title type='text'>把utf8字符输出成url格式</title><content type='html'>&lt;blockquote&gt;sub url_encode {&lt;br/&gt;# default argument is $_&lt;br/&gt;    local $_ = @_ ? shift : $_;&lt;br/&gt;    defined or return;&lt;br/&gt;&lt;br/&gt;    # change unsafe characters (except for space) to encoded value&lt;br/&gt;s/([^\w()'*~!.-])/sprintf '%%%02x', ord($1)/eg;&lt;br/&gt;&lt;br/&gt;    # change spaces to +&lt;br/&gt;    tr/ /+/;&lt;br/&gt;&lt;br/&gt;    return $_;&lt;br/&gt;}&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115498333133142128?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115498333133142128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115498333133142128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498333133142128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115498333133142128'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/utf8url.html' title='把utf8字符输出成url格式'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115496387155959891</id><published>2006-08-07T08:04:00.000-07:00</published><updated>2006-08-07T08:20:46.153-07:00</updated><title type='text'>OSX下安装LWP</title><content type='html'>&lt;br/&gt;&lt;br /&gt;找到Terminal&lt;br/&gt;&lt;br/&gt;&lt;div&gt;&lt;pre&gt;&lt;div&gt;perl -MCPAN -e shell&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;然后 &lt;pre&gt;&lt;div&gt;install HTTP::Tagset&lt;/div&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;最后: &lt;pre&gt;&lt;div&gt;install LWP&lt;/div&gt;&lt;/pre&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115496387155959891?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115496387155959891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115496387155959891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115496387155959891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115496387155959891'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/08/osxlwp.html' title='OSX下安装LWP'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115420817153670004</id><published>2006-07-29T14:04:00.000-07:00</published><updated>2006-07-29T14:31:33.700-07:00</updated><title type='text'>PXPerl:又一个win32的perl实现</title><content type='html'>搜来搜去，找到这么一个好东西：&lt;a href="http://pxperl.com/?Pxperl"&gt;PXPerl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PXPerl是一个针对win32平台的perl实现，目前版本是5.8.7-6。内容包括：perl-5.8.7*(intel的编译器编译的，应该更快吧？)，众多的CPAN模块（据称不比ActivePerl少），还前瞻性的加入了pugs、parrot（一切为了perl6），以及一个编辑器（SciTE）（，事实上还有nmake，微软白送的）。&lt;br /&gt;&lt;br /&gt;可惜，似乎目前PXPerl还不支持ppm之类的二进制模块包，最好要有本地的编译器，比如MinGW，nmake，或者是Intel C++ compiler。不过想在Perl6里游泳的人可以先在这里练习一下水性。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115420817153670004?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pxperl.com/?Pxperl' title='PXPerl:又一个win32的perl实现'/><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115420817153670004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115420817153670004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115420817153670004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115420817153670004'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/07/pxperlwin32perl.html' title='PXPerl:又一个win32的perl实现'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115418843469763262</id><published>2006-07-29T08:53:00.000-07:00</published><updated>2006-07-29T08:53:54.696-07:00</updated><title type='text'>如果说perl的源代码是随机字符的话</title><content type='html'>&lt;blockquote&gt;Python's syntax succeeds in combining the mistakes of Lisp and Fortran.&lt;br /&gt;I do not construe that as progress.      -- Larry Wall, May 12 2004&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Frankly, I'd rather not try to compete with Perl in the areas where Perl is&lt;br /&gt;best -- it 's a battle that 's impossible to win, and I don't think it is a&lt;br /&gt;good idea to strive for the number of obscure options and shortcuts that Perl&lt;br /&gt;has acquired through the years.          -- Guido van Rossum, 7 Jul 1992&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115418843469763262?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115418843469763262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115418843469763262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115418843469763262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115418843469763262'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/07/perl.html' title='如果说perl的源代码是随机字符的话'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31545981.post-115418246053250942</id><published>2006-07-29T07:13:00.000-07:00</published><updated>2006-07-29T08:52:04.280-07:00</updated><title type='text'>Catch me if you can...</title><content type='html'>&lt;blockquote&gt;发信人: crazycool (上), 信区: Python&lt;br /&gt;标  题: Re: 请问什么情况下用Python而不用C++?&lt;br /&gt;发信站: 水木社区 (Sat Jul 29 19:32:47 2006), 转信&lt;br /&gt;&lt;br /&gt;Python:&lt;br /&gt;if you(can)&lt;sup&gt;*&lt;/sup&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (me)&lt;br /&gt;&lt;br /&gt;C:&lt;br /&gt;if (you(can)) catch (me);&lt;br /&gt;&lt;br /&gt;Perl:&lt;br /&gt;catch me if you can;&lt;br /&gt;&lt;br /&gt;【 在 cnsky (做人要厚道) 的大作中提到: 】&lt;br /&gt;&lt;span class="f006"&gt;: 相比之下还是比较喜欢PYTHON,&lt;/span&gt;&lt;br /&gt;&lt;span class="f006"&gt;: perl写的东东阅读困难.&lt;/span&gt;&lt;br /&gt;&lt;span class="f006"&gt;: 可能是因为我用C用的不多&lt;/span&gt;&lt;br /&gt;&lt;span class="f006"&gt;: ...................&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;*应该为if you.can():&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31545981-115418246053250942?l=zhcnperl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhcnperl.blogspot.com/feeds/115418246053250942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31545981&amp;postID=115418246053250942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115418246053250942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31545981/posts/default/115418246053250942'/><link rel='alternate' type='text/html' href='http://zhcnperl.blogspot.com/2006/07/catch-me-if-you-can.html' title='Catch me if you can...'/><author><name>Zhangchn</name><uri>http://www.blogger.com/profile/14949754465779636912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_vOruKJoY1mU/RzNF2k5HeSI/AAAAAAAAAO4/i42ut9ZKNGI/s400/selfphoto.jpg'/></author><thr:total>0</thr:total></entry></feed>
