<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>清纯自然</title>
	<atom:link href="http://billzt.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://billzt.wordpress.com</link>
	<description>天真无邪</description>
	<lastBuildDate>Fri, 08 Oct 2010 06:37:24 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='billzt.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/b00dbfb39764be42fe05b90235ca760e?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>清纯自然</title>
		<link>http://billzt.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://billzt.wordpress.com/osd.xml" title="清纯自然" />
	<atom:link rel='hub' href='http://billzt.wordpress.com/?pushpress=hub'/>
		<item>
		<title>博客搬家啦！</title>
		<link>http://billzt.wordpress.com/2010/10/08/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6%e5%95%a6%ef%bc%81/</link>
		<comments>http://billzt.wordpress.com/2010/10/08/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6%e5%95%a6%ef%bc%81/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 06:37:13 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/10/08/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6%e5%95%a6%ef%bc%81/</guid>
		<description><![CDATA[NOTICE: 即日起博客搬迁至http://bnuzt.org，全新天地等着你！<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=244&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/10/jt.jpg" /><big><big><big></p>
<p><font color="#ff0000">NOTICE: 即日起博客搬迁至<a target="_blank" href="http://bnuzt.org">http://bnuzt.org</a>，全新天地等着你！</font></big></big></big></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=244&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/10/08/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6%e5%95%a6%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/10/jt.jpg" medium="image" />
	</item>
		<item>
		<title>初品BioPerl（第二篇：构造一条fasta序列）</title>
		<link>http://billzt.wordpress.com/2010/10/03/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%ba%8c%e7%af%87%ef%bc%9a%e6%9e%84%e9%80%a0%e4%b8%80%e6%9d%a1fasta%e5%ba%8f%e5%88%97%ef%bc%89/</link>
		<comments>http://billzt.wordpress.com/2010/10/03/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%ba%8c%e7%af%87%ef%bc%9a%e6%9e%84%e9%80%a0%e4%b8%80%e6%9d%a1fasta%e5%ba%8f%e5%88%97%ef%bc%89/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 10:33:55 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/10/03/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%ba%8c%e7%af%87%ef%bc%9a%e6%9e%84%e9%80%a0%e4%b8%80%e6%9d%a1fasta%e5%ba%8f%e5%88%97%ef%bc%89/</guid>
		<description><![CDATA[紫萱姐： 接下来我们就来讨论BioPerl的用法。根据一句经典名言，Perl的用途“90%与文本处理有关，10%与其它事务有关”（改编自小驼书），Perl语言的强项就在于文本处理（当然主要是纯文本，和许多Unix工具如grep, awk, sed等工具类似哦！），而恰好大多数生物信息学数据都是以纯文本的形式存放的（包括蛋白质、核酸等序列文件，序列比对文件，进化树文件等），所以BioPerl当初设计的初衷就是为了分析、处理这些文本数据文件。当然随着模块越来越多，BioPerl的功能也扩展了，现在也有人喜欢用BioPerl作为下载工具来下载序列，或者用来运行blast程序等。虽然不是不可以，但我并不建议这么做，因为通过BioPerl来运行的blast程序肯定没有直接运行的blast程序来得快，来得灵活。正如同想要删除一个文件，我们一般都会执行rm file.txt，而不会另外编一个Perl程序说：perl -e 'unlink "file.txt"' 。&#160;&#160;&#160;&#160;&#160; 进入正题啦！首先，生物信息学处理最多的问题是什么？当然就是蛋白质和核酸序列喽！生物大分子序列的书写有好多种格式，如Fasta, Genbank, EMBL, SwissProt等。其中Fasta是最简单的序列格式，所以我们先来学习使用BioPerl来构造fasta序列。当然这在实际工作上意义不大，因为大部分序列应该从数据库中下载得到（或者通过程序运算出来），而不是自己构造出来的。我们在下一篇会学习如何从文件中提取fasta序列。现在还是先打基础吧。 ^_^ &#160;&#160;&#160;&#160;&#160; fasta格式的序列是这样的： &#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160; 也就是说，上面这条序列的“名称”是：&#160;&#160;&#160; gi&#124;147605&#124;gb&#124;J01673.1&#124;ECORHO&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; “描述”是：&#160;&#160;&#160; E.coli rho gene coding for transcription termination factor&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 序列则是下面的一大段 &#160;&#160;&#160;&#160;&#160; 当然，这条序列的名称比较复杂，如果是自己“构造”序列，自然没必要用这么复杂的名称，可以只叫ECORHO或者叫E_coli_rho都行。但千万注意。由于BioPerl一般是把从大于号开始一直到第一个空格出现的字段认为是“名称”，所以序列的名字中不要出现空格。如果你把序列的名字叫做E.coli rho，把头字段写成这样： &#62;E.coli rho&#160; &#160; E.coli rho gene coding for transcription termination factor &#160;&#160;&#160;&#160;&#160; BioPerl会认为“名称”是E.coli（从大于号开始到第一个空格出现），而“描述”是 rho&#160; &#160; E.coli rho gene coding for transcription termination [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=232&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/10/zx.jpg" /> <b>紫萱姐：</b> 接下来我们就来讨论BioPerl的用法。根据一句经典名言，Perl的用途“90%与文本处理有关，10%与其它事务有关”（改编自小驼书），Perl语言的强项就在于文本处理（当然主要是纯文本，和许多Unix工具如grep, awk, sed等工具类似哦！），而恰好大多数生物信息学数据都是以纯文本的形式存放的（包括蛋白质、核酸等序列文件，序列比对文件，进化树文件等），所以BioPerl当初设计的初衷就是为了分析、处理这些文本数据文件。当然随着模块越来越多，BioPerl的功能也扩展了，现在也有人喜欢用BioPerl作为下载工具来下载序列，或者用来运行blast程序等。虽然不是不可以，但我并不建议这么做，因为通过BioPerl来运行的blast程序肯定没有直接运行的blast程序来得快，来得灵活。正如同想要删除一个文件，我们一般都会执行<code>rm file.txt</code>，而不会另外编一个Perl程序说：<code>perl -e 'unlink "file.txt"'</code> 。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入正题啦！首先，生物信息学处理最多的问题是什么？当然就是蛋白质和核酸序列喽！生物大分子序列的书写有好多种格式，如Fasta, Genbank, EMBL, SwissProt等。其中Fasta是最简单的序列格式，所以我们先来学习使用BioPerl来构造fasta序列。当然这在实际工作上意义不大，因为大部分序列应该从数据库中下载得到（或者通过程序运算出来），而不是自己构造出来的。我们在下一篇会学习如何从文件中提取fasta序列。现在还是先打基础吧。 ^_^</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#6600cc"><b> fasta格式的序列是这样的：</b></font></p>
<p>
<div align="center"><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/10/1.png" /></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说，上面这条序列的“名称”是：&nbsp;&nbsp;&nbsp; <font face="monospace">gi|147605|gb|J01673.1|ECORHO</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “描述”是：&nbsp;&nbsp;&nbsp; <font face="monospace">E.coli rho gene coding for transcription termination factor</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 序列则是下面的一大段</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="monospace">当然，</font>这条序列的名称比较复杂，如果是自己“构造”序列，自然没必要用这么复杂的名称，可以只叫ECORHO或者叫E_coli_rho都行。但千万注意。<font color="#ff0000">由于BioPerl一般是把从大于号开始一直到第一个空格出现的字段认为是“名称”</font>，所以序列的名字中不要出现空格。如果你把序列的名字叫做<font color="#3366ff">E.coli rho</font>，把头字段写成这样：</p>
<div align="center"><font color="#3366ff" face="monospace">&gt;E.coli rho&nbsp; &nbsp; E.coli rho gene coding for transcription termination factor</font></p>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BioPerl会认为“名称<font face="serif">”是</font><font color="#999900" face="serif">E.coli</font><font face="serif">（从大于号开始到第一个空格出现），而“描述”是 </font><font color="#999900" face="serif">rho&nbsp; &nbsp; E.coli rho gene coding for transcription termination factor</font><font face="monospace"><font face="serif">，结</font>果</font>会把你搞得稀里糊涂的，要想不引发岐义，可以这么写：</p>
<div align="center"><font color="#3333ff" face="monospace">&gt;E.coli_rho&nbsp; &nbsp; E.coli rho gene coding for transcription termination factor</font></p>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 呵呵，只加上一条下划线，就对了。如果我们的序列是从NCBI这样的数据库里下载下来的，无须担心名称和描述的问题，但有时序列是通过其他程序运算出来，需转入下一道工序加工，这时取个好听的名字就很重要。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 知道了fasta序列的格式之后，我们可以用一般的Perl程序“编”出这样一条序列：</p>
<div style="background:none repeat scroll 0 0 rgb(253,253,253);color:black;"><font face="monospace"><span style="color:rgb(0,136,0);font-style:italic;">#!/usr/bin/perl -w</span><br /></font></div>
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <font face="monospace"><span style="color:rgb(184,134,11);">%a_fasta_seq</span><span style="color:rgb(102,102,102);">=</span>(<br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(187,68,68);">&#8220;display_name&#8221;</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;gi|147605|gb|J01673.1|ECORHO&#8221;</span><span style="color:rgb(0,0,0);">,</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#这是序列的名称</span><br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(187,68,68);">&#8220;desc&#8221;</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;E.coli rho gene coding for transcription termination factor&#8221;</span><span style="color:rgb(0,0,0);">,</span>&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#这是序列的描述</span><br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(187,68,68);">&#8220;seq&#8221;</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG&#8221;</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(0,136,0);font-style:italic;">#这是序列（只写了一部分）</span><br /> )</font>;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后可以把它打印出来：</p>
</div>
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <font face="monospace"><span style="color:rgb(170,34,255);font-weight:bold;">print</span> <span style="color:rgb(102,102,102);">&lt;&lt;</span><span style="color:rgb(0,0,0);">EOF</span>;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#这是根据fasta格式依次打印名称、描述和序列，使用了Here文档的写法，也可以拆分成多条print语句</span><br /><span style="color:rgb(102,102,102);">&gt;</span></font> <font face="monospace"><span style="color:rgb(184,134,11);">$a_fasta_seq</span><span style="color:rgb(0,0,0);">{</span><span style="color:rgb(0,0,0);">dispaly_name</span><span style="color:rgb(0,0,0);">}</span><span style="color:rgb(102,102,102);">\</span><span style="color:rgb(0,0,0);">t</span><span style="color:rgb(184,134,11);">$a_fasta_seq</span><span style="color:rgb(0,0,0);">{</span><span style="color:rgb(0,0,0);">desc</span><span style="color:rgb(0,0,0);">}</span><br /><span style="color:rgb(184,134,11);">$a_fasta_seq</span></font> <font face="monospace"><span style="color:rgb(0,0,0);">{</span><span style="color:rgb(0,0,0);">seq</span><span style="color:rgb(0,0,0);">}</span><br /><span style="color:rgb(0,0,0);">EOF</span></font> </div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种方法的优点是步骤十分清晰，只是太麻烦了一点。如果要构造一个GenBank序列，则得写N长的print。还有，如果要构造许多条fasta序列，也不方便。总不能写%fasta_seq_1, %fasta_seq_2, %fasta_seq_3吧？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#6600cc"><b>下面我们就来看看用BioPerl该怎么写：</b></font></p>
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <font face="monospace"><span style="color:rgb(0,136,0);font-style:italic;">#!/usr/bin/perl -w</span><br /><span style="color:rgb(170,34,255);font-weight:bold;">use</span></font> <font face="monospace"> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#加载Bio::Seq模块。</span><br /><span style="color:rgb(184,134,11);">$seq_obj</span></font> <font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);font-weight:bold;">new</span>;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#调用Bio::Seq模块的new方法，可以建立一个序列对象，命名为$seq_obj。</span><br /><span style="color:rgb(0,136,0);font-style:italic;">#给这个新建的$seq_obj对象赋予三个属性的值：dispaly_name（序列的名称），desc（序列的描述）以及seq（序列的内容）</span></font> <font face="monospace"><br /><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">display_name</span>(<span style="color:rgb(187,68,68);">&#8220;gi|147605|gb|J01673.1|ECORHO&#8221;</span>);<br /><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">desc</span>(<span style="color:rgb(187,68,68);">&#8220;E.coli rho gene coding for transcription termination factor&#8221;</span>);<br /><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">seq</span>(<span style="color:rgb(187,68,68);">&#8220;AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG&#8221;</span>);</font></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="monospace">第一句是模块的加载，会把相关的新函数（其实是“方法”）加载进来。<br />&nbsp;&nbsp; 第二句的语法其实在小驼书中已提到过：调用了Bio::Seq模块中的new方法。对于调用面向对象的模块的方法（以前说“函数”，在OO术语中称“方法”）要使用“全名”的方式来调用，语法是：模块名（Bio::Seq）+瘦箭头（-&gt;）+方法名（new）。顺便透露一个小秘密：所有面向对象的模块都有一个叫做&#8221;new&#8221;的方法，它的功能简单且重要：创建一个新的对象。</p>
<p>&nbsp;&nbsp; 会一点Perl的人都应该会创建一些所谓的“数据结构”，比如说：<br />&nbsp;&nbsp; 创建一个标量：&nbsp; $scalar;<br />&nbsp;&nbsp; 创建一个数组：&nbsp; @array;<br />&nbsp;&nbsp; 创建一个哈希：&nbsp; %hash;<br />&nbsp;&nbsp; 因为标量、数组和哈希都太“简单”啦，而且是Perl内置的数据结构，在标量、数组或哈希里以什么样的方式来组织数据都是Perl自己已经定好了的（注意是组织数据的</font><font color="#ff0000" face="monospace"><b>方式</b></font><font face="monospace">而不是数据的</font><font color="#ff0000" face="monospace"><b>内容</b></font><font face="monospace">哦！）。而对象则可以看成是自己定义的一种数据结构，我们可以给对象赋予一些属性来描述它（有点类似于在哈希中放入键值对来描述你创建的哈希）。但是创建的对象不像标量、数组或哈希那样有前缀（$, @和%），在Perl中对象是用存放它的</font><font color="#cc0000" face="monospace">地址</font><font face="monospace">来表示的，而恰恰凑巧的是，地址（一般叫做“引用”）的前缀就是$。<br />&nbsp;&nbsp; 所以，创建一个</font><font face="monospace"><span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span>对象就是这样： </font><font face="monospace"><span style="color:rgb(184,134,11);">$seq_obj</span> </font><font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);font-weight:bold;">new</span>;</p>
<p>&nbsp;&nbsp; 你可能还会为两个问题而困惑：（1）问：为什么要使用new函数来返回一个对象，而不是</font><font face="monospace"><span style="color:rgb(170,34,255);font-weight:bold;"></span>像创建标量那样直接写$seq_obj就行了呢？ 答：因为对象是需要我们</font><font color="#ff0000" face="monospace">自定义</font><font face="monospace">的，所以我们需要写一个子程序来定义对象的结构（其实是它的</font><font color="#ff0000" face="monospace">属性</font><font face="monospace">和</font><font color="#ff0000" face="monospace">方法</font><font face="monospace">，只是空的白纸，还没有填入内容），而碰巧这个子程序的名称就叫new，并且别人已经帮我们写好且内嵌在Bio::Seq模块（以及以后我们要用的其他模块）里了。 （2）问：对象的名称一定要以_obj结尾吗？ 答：不需要。你完全可以写  </font><font face="monospace"><span style="color:rgb(184,134,11);">$seq</span> </font><font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);font-weight:bold;">new</span>; ，这样也是创建了一个名字叫做seq的对象，但是到后来你会搞不清$seq究竟是一个存放序列字符串的标量标量呢还是一个存放（指向）整个序列信息的对象呢？所以，既然对象没有“前缀”，我们就自己给它加一个“后缀”上去。 <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>&nbsp;&nbsp; 创建了一个seq_obj对象之后，我们可以为它“赋值”。先来回顾一下其他数据结构是怎么赋值的：<br />&nbsp;&nbsp; 给标量赋值：&nbsp; $scalar=&#8221;Hello!\n&#8221;;<br />&nbsp;&nbsp; 给列表赋值：&nbsp; @array=(1, 2, 3, 4, 5);<br />&nbsp;&nbsp; 给哈希赋值：&nbsp; %hash=(&#8220;key1&#8243;=&gt;&#8221;vlaue1&#8243;, &#8220;key2&#8243;=&gt;&#8221;value2&#8243;);<br />&nbsp;&nbsp; 对象“赋值”的方式比较特殊。对于这个Bio::Seq（以及许多BioPerl对象）对象来说，是采取调用方法来“赋值”。</p>
<p></font><font face="monospace"><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">display_name</span>(<span style="color:rgb(187,68,68);">&#8220;gi|147605|gb|J01673.1|ECORHO&#8221;</span>);<br /><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">desc</span>(<span style="color:rgb(187,68,68);">&#8220;E.coli rho gene coding for transcription termination factor&#8221;</span>);<br /><span style="color:rgb(184,134,11);">$seq_obj</span></font><font face="monospace"><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">seq</span>(<span style="color:rgb(187,68,68);">&#8220;AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG&#8221;</span>);</p>
<p>&nbsp;&nbsp; 而且，和标量、数据、哈希一样，对象的</font><font color="#ff0000" face="monospace">创建</font><font face="monospace">和“</font><font color="#ff0000" face="monospace">赋值</font><font face="monospace">”可以合并为一步：</p>
<p></font>
<div style="background:none repeat scroll 0 0 rgb(253,253,253);color:black;"><font face="monospace"><span style="color:rgb(0,136,0);font-style:italic;">#!/usr/bin/perl -w</span><br /></font></div>
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <font face="monospace"><span style="color:rgb(170,34,255);font-weight:bold;">use</span> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span>;<br /><span style="color:rgb(184,134,11);">$seq_obj</span> </font><font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(0,0,255);font-weight:bold;">Bio::</span><span style="color:rgb(0,0,0);">Seq</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);font-weight:bold;">new</span>( <span style="color:rgb(102,102,102);">-</span><span style="color:rgb(0,0,0);">display_name</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;gi|147605|gb|J01673.1|ECORHO&#8221;</span><span style="color:rgb(0,0,0);">,</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(102,102,102);">-</span><span style="color:rgb(0,0,0);">desc</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;E.coli rho gene coding for transcription termination factor&#8221;</span><span style="color:rgb(0,0,0);">,</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:rgb(102,102,102);">-</span><span style="color:rgb(0,0,0);">seq</span> <span style="color:rgb(102,102,102);">=&gt;</span> <span style="color:rgb(187,68,68);">&#8220;AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG&#8221;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br /></font></div>
<p><font face="monospace"><br />&nbsp;&nbsp; 第一眼看去，这个程序有点像哈希赋值，但“胖箭头”左边的“键”有点不同寻常，带了短横线。<br />&nbsp;&nbsp; 我们来看看前面一大堆操作创建出来的$seq_obj对象到底是怎样的。现在我们已经赋予了它三个属性：display_name, desc, seq，即所谓fasta序列的“三要素”：名称、描述和序列。赋予了这些“值”之后，我们可以查看它们，当然直接打印$seq_obj是行不通的（正如同我们不能自己打印%hash一样），而是要通过调用“方法”来返回可打印的字符串：</p>
<p></font>
<div style="background-color:rgb(249,247,237);" id="codee_html">
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <font face="monospace"><span style="color:rgb(170,34,255);font-weight:bold;">my</span> (<span style="color:rgb(184,134,11);">$fasta_name</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(184,134,11);">$fasta_desc</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(184,134,11);">$fasta_seq</span>); <span style="color:rgb(0,136,0);font-style:italic;">#创建了三个普通的标量变量来存放三个属性值</span><br /><span style="color:rgb(184,134,11);">$fasta_name</span></font> <font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(184,134,11);">$seq_obj</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">display_name</span>; <span style="color:rgb(0,136,0);font-style:italic;">#调用对象的display_name方法来得到名称</span><br /><span style="color:rgb(184,134,11);">$fasta_desc</span></font> <font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(184,134,11);">$seq_obj</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">desc</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#调用对象的desc方法来得到描述</span><br /><span style="color:rgb(184,134,11);">$fasta_seq</span></font> <font face="monospace"> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(184,134,11);">$seq_obj</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(0,0,0);">seq</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;">#调用对象的seq方法来得到序列</span><br /><span style="color:rgb(0,136,0);font-style:italic;">#现在可以打印三个属性值了</span></font> <font face="monospace"><br /><span style="color:rgb(170,34,255);font-weight:bold;">print</span></font> <font face="monospace"> <span style="color:rgb(187,68,68);">&#8220;NAME:\t$fasta_name\nDESCRIBE:\t$fasta_desc\nSEQUENCE:\t$fasta_seq\n&#8221;</span>;<br /></font></div>
</p></div>
<p><font face="monospace"><br />&nbsp;&nbsp; 结果将是这样：</p>
<p>NAME:&nbsp;&nbsp;&nbsp; gi|147605|gb|J01673.1|ECORHO<br />DESCRIBE:&nbsp;&nbsp;&nbsp; E.coli rho gene coding for transcription termination factor<br />SEQUENCE:&nbsp;&nbsp;&nbsp; AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG</p>
<p>&nbsp;&nbsp; 如果仅此而已，那BioPerl是没有任何用途的（和直接创建一个哈希%a_fasta_seq一模一样嘛！）。这里面当然是大有文章啦。比如，当我们给一个哈希（或数组）赋值之后，我们除了能查到刚赋值的内容（若干项或所有项）之外，还能查到好多其他内容呢！比如，可以查看数组元素的个数啊（使用scalar @array），哈希的键列表啊（使用keys %hash）等等。对于这个$seq_obj对象，功能就更加强大了。</p>
<p>&nbsp;&nbsp; 我们可以直接数出序列的长度：</p>
<p><span style="color:rgb(184,134,11);"></span><span style="color:rgb(184,134,11);">$fasta_seq_length</span> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(184,134,11);">$seq_obj</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);">length</span>;&nbsp; <span style="color:rgb(0,136,0);font-style:italic;"># 得到序列的长度，70</span><br /></font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们可以查阅这段序列究竟是DNA还是蛋白质。</p>
<p><font face="monospace"><span style="color:rgb(184,134,11);">$fasta_property</span> <span style="color:rgb(102,102,102);">=</span> <span style="color:rgb(184,134,11);">$seq_obj</span><span style="color:rgb(102,102,102);">-&gt;</span><span style="color:rgb(170,34,255);">alphabet</span>;&nbsp;&nbsp;<span style="color:rgb(0,136,0);font-style:italic;"></span> </font><font face="monospace"><span style="color:rgb(0,136,0);font-style:italic;"># 返回dna，看来Perl猜对啦</span></font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由此可以看出来，电脑还是很聪明的，但提供电脑程序的人绝对比电脑更聪明。 <font> <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </font></p>
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=232&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/10/03/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%ba%8c%e7%af%87%ef%bc%9a%e6%9e%84%e9%80%a0%e4%b8%80%e6%9d%a1fasta%e5%ba%8f%e5%88%97%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/10/zx.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/10/1.png" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" medium="image" />
	</item>
		<item>
		<title>抛弃永中Office改用OpenOffice</title>
		<link>http://billzt.wordpress.com/2010/09/26/%e6%8a%9b%e5%bc%83%e6%b0%b8%e4%b8%adoffice%e6%94%b9%e7%94%a8openoffice/</link>
		<comments>http://billzt.wordpress.com/2010/09/26/%e6%8a%9b%e5%bc%83%e6%b0%b8%e4%b8%adoffice%e6%94%b9%e7%94%a8openoffice/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 00:09:32 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Ubuntu/Linux]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/26/%e6%8a%9b%e5%bc%83%e6%b0%b8%e4%b8%adoffice%e6%94%b9%e7%94%a8openoffice/</guid>
		<description><![CDATA[小葵： 我在“盘点我在Ubuntu/gnome桌面上使用的软件 （一）“一文中曾经提到使用永中Office（即EIOffice）作为办公软件，不过我现在倒改变主意了，还是用Ubuntu自带的OpenOffice比较方便。&#160;&#160;&#160;&#160;&#160; 以前提EIOffice主要是因为它对Microsoft Office有较好的兼容性，但自从我发现在Ubuntu中安装新字体的秘密之后（参见”Ubuntu10.04下安装系统字体最简单的方法“），情况就不一样了。因为我们可以很方便地把新的字体安装到系统中，然后OpenOffice就可以使用这些字体。通常情况下人们在写Word文档时使用得比较多的就是宋体、黑体和楷体，其它稀奇古怪的字体都很少使用，所以只要你安装了这些字体，用OpenOffice打开别人写的Word文档就会很漂亮。当然如果你愿意的话甚至还可以把OpenOffice的默认字体也改成宋体，这样别人也很方便阅读你的文档。&#160;&#160;&#160;&#160;&#160; 因为OpenOffice与Ubuntu本身有很好的融合性，所以打开文档的速度还是比较快的。而且，OpenOffice还有丰富的扩展插件，在写论文是可以插入参考文献，这些都是EIOffice比不上的。当然，如果你的文档中设置了文字环绕图片，图片环绕文字等多种复杂的格式，那么OpenOffice可能会吃不消；除非你要编辑简报，否则没必要用这些复杂的格式。如果你真的想要用这些复杂格式，应该将他们转换成PDF，这样无论搬到什么电脑上都行得通。日常生活写的小文档不外乎就文字，简单图片，表格等，OpenOffice完全可以胜任。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=226&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/09/lk.jpg" /><b>小葵：</b> 我在“<a href="http://billzt.wordpress.com/2010/08/21/%e7%9b%98%e7%82%b9%e6%88%91%e5%9c%a8ubuntugnome%e6%a1%8c%e9%9d%a2%e4%b8%8a%e4%bd%bf%e7%94%a8%e7%9a%84%e8%bd%af%e4%bb%b6-%ef%bc%88%e4%b8%80%ef%bc%89-2/">盘点我在Ubuntu/gnome桌面上使用的软件 （一）</a>“一文中曾经提到使用永中Office（即EIOffice）作为办公软件，不过我现在倒改变主意了，还是用Ubuntu自带的OpenOffice比较方便。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以前提EIOffice主要是因为它对Microsoft Office有较好的兼容性，但自从我发现在Ubuntu中安装新字体的秘密之后（参见”<a href="http://billzt.wordpress.com/2010/08/30/ubuntu10-04%e4%b8%8b%e5%ae%89%e8%a3%85%e7%b3%bb%e7%bb%9f%e5%ad%97%e4%bd%93%e6%9c%80%e7%ae%80%e5%8d%95%e7%9a%84%e6%96%b9%e6%b3%95/">Ubuntu10.04下安装系统字体最简单的方法</a>“），情况就不一样了。因为我们可以很方便地把新的字体安装到系统中，然后OpenOffice就可以使用这些字体。通常情况下人们在写Word文档时使用得比较多的就是宋体、黑体和楷体，其它稀奇古怪的字体都很少使用，所以只要你安装了这些字体，用OpenOffice打开别人写的Word文档就会很漂亮。当然如果你愿意的话甚至还可以把OpenOffice的默认字体也改成宋体，这样别人也很方便阅读你的文档。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为OpenOffice与Ubuntu本身有很好的融合性，所以打开文档的速度还是比较快的。而且，OpenOffice还有丰富的扩展插件，在写论文是可以插入参考文献，这些都是EIOffice比不上的。当然，如果你的文档中设置了文字环绕图片，图片环绕文字等多种复杂的格式，那么OpenOffice可能会吃不消；除非你要编辑简报，否则没必要用这些复杂的格式。如果你真的想要用这些复杂格式，应该将他们转换成PDF，这样无论搬到什么电脑上都行得通。日常生活写的小文档不外乎就文字，简单图片，表格等，OpenOffice完全可以胜任。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=226&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/26/%e6%8a%9b%e5%bc%83%e6%b0%b8%e4%b8%adoffice%e6%94%b9%e7%94%a8openoffice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/09/lk.jpg" medium="image" />
	</item>
		<item>
		<title>北京地坛图书节，抱回一只大勇气</title>
		<link>http://billzt.wordpress.com/2010/09/23/%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%9d%9b%e5%9b%be%e4%b9%a6%e8%8a%82%ef%bc%8c%e6%8a%b1%e5%9b%9e%e4%b8%80%e5%8f%aa%e5%a4%a7%e5%8b%87%e6%b0%94/</link>
		<comments>http://billzt.wordpress.com/2010/09/23/%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%9d%9b%e5%9b%be%e4%b9%a6%e8%8a%82%ef%bc%8c%e6%8a%b1%e5%9b%9e%e4%b8%80%e5%8f%aa%e5%a4%a7%e5%8b%87%e6%b0%94/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 08:33:53 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Chinese Paladin]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/23/%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%9d%9b%e5%9b%be%e4%b9%a6%e8%8a%82%ef%bc%8c%e6%8a%b1%e5%9b%9e%e4%b8%80%e5%8f%aa%e5%a4%a7%e5%8b%87%e6%b0%94/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160; 哈哈，好可爱哦！就是太大了一点，想要抱着它睡觉，有点别扭~~~&#160;&#160;&#160;&#160;&#160; 其实我最期待的是花楹，可惜时间久了，都没人提了。我希望哪一天好心的寰宇能把花楹也做出来啊！<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=221&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div align="center"><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/09/small.jpg" /></p>
<div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 哈哈，好可爱哦！就是太大了一点，想要抱着它睡觉，有点别扭~~~<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实我最期待的是花楹，可惜时间久了，都没人提了。我希望哪一天好心的寰宇能把花楹也做出来啊！</p>
<div align="center"><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/09/yongqi.gif" /></div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=221&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/23/%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%9d%9b%e5%9b%be%e4%b9%a6%e8%8a%82%ef%bc%8c%e6%8a%b1%e5%9b%9e%e4%b8%80%e5%8f%aa%e5%a4%a7%e5%8b%87%e6%b0%94/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/09/small.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/yongqi.gif" medium="image" />
	</item>
		<item>
		<title>初品BioPerl（第一篇：让BioPerl在你的电脑上安家）</title>
		<link>http://billzt.wordpress.com/2010/09/18/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%b8%80%e7%af%87%ef%bc%9a%e8%ae%a9bioperl%e5%9c%a8%e4%bd%a0%e7%9a%84%e7%94%b5%e8%84%91%e4%b8%8a%e5%ae%89%e5%ae%b6%ef%bc%89/</link>
		<comments>http://billzt.wordpress.com/2010/09/18/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%b8%80%e7%af%87%ef%bc%9a%e8%ae%a9bioperl%e5%9c%a8%e4%bd%a0%e7%9a%84%e7%94%b5%e8%84%91%e4%b8%8a%e5%ae%89%e5%ae%b6%ef%bc%89/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 07:21:41 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[BioPerl]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/18/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%b8%80%e7%af%87%ef%bc%9a%e8%ae%a9bioperl%e5%9c%a8%e4%bd%a0%e7%9a%84%e7%94%b5%e8%84%91%e4%b8%8a%e5%ae%89%e5%ae%b6%ef%bc%89/</guid>
		<description><![CDATA[雪见：Perl的模块有两类，一类是内置在Perl中的，比如小驼书中提到的CGI，File::Basename等，所以你无须另外下载安装这些模块即可使用它们；另一类则是与Perl相分离的，所以你要下载并安装才可以使用它们。很不幸，BioPerl属于后者。而且，安装过程对某些人某些电脑来说不是很容易。&#160;&#160;&#160;&#160;&#160;&#160;&#160; 首先，如果你恰巧跟上了因Ubuntu10.04的发行带来的Linux崇拜潮流，已经成功抛弃了Windows Xp转向Ubuntu的话，那么恭喜你，安装BioPerl和安装gimp之类的应用软件一样简单！ 打开新立德软件包管理器，输入BioPerl搜索，出现的第一项就是（目前的版本是1.6.1），然后右键点击选择“安装”，系统就会自动把所有依赖的软件包全部安装上。怎么样，是不是很方便呢？而且将来某一天若BioPerl有了更新，可以很方便地使用新立德来升级。 &#160;&#160;&#160;&#160;&#160; 当然，如果大家都这么方便的话，我就不用写这篇文章啦！对于使用其他Linux和Unix系统的人来说可能未必有这种软件包管理器（即使有，在软件源里也未必有BioPerl的安装文件）。但是所有的类Unix系统应该都支持“源代码编译安装”的方式（这是不少Linux高手自认为很酷的装软件方法，哪怕现在还有好多人在用。新手最好不要用，很容易出现问题）。&#160;&#160;&#160;&#160;&#160; 对于这些类Unix系统的用户来说，安装BioPerl和安装一些普通的软件方法是一样的，步骤是：&#160;&#160;&#160;&#160; （1）下载BioPerl的源代码，并解压。我提供两个网址：&#160;&#160;&#160;&#160;&#160; http://bioperl.org/DIST/BioPerl-1.6.1.tar.gz&#160;&#160;&#160;&#160;&#160; http://search.cpan.org/CPAN/authors/id/C/CJ/CJFIELDS/BioPerl-1.6.1.tar.gz&#160;&#160;&#160;&#160; （2）进入该目录，然后执行下列命令：&#160;&#160;&#160; $ perl Build.PL&#160;&#160;&#160; $ ./Build test&#160;&#160;&#160; # ./Build install &#160;&#160;&#160; &#160; 注意：执行./Build install时必须要有系统管理员权限。&#160;&#160;&#160;&#160;&#160; 这种方法看起来好像挺简单的，但其实不太容易。因为BioPerl和许多其他模块有依赖关系，所以在安装过程中系统会反复询问你是否要安装XX模块。你最好要在连接Internet的情况下安装才行。如果你只想用BioPerl的核心模块，不想使用额外附加功能，可以选择不安装。但我不敢保证以后使用是否会出现问题。 ***********************&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 分割线&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ******************************* &#160;&#160;&#160;&#160;&#160; 接下来要处理最麻烦的一种操作系统：Windows。因为在Windows上使用“源代码编译安装”并不容易（甚至可以说就是不行的！）。&#160;&#160;&#160;&#160;&#160; 如果你的英文水平还不错，请阅读以下文章：&#160;&#160;&#160;&#160;&#160; http://www.bioperl.org/wiki/Installing_Bioperl_on_Windows&#160;&#160;&#160;&#160;&#160; 如果你实在不想看英文，请跟着我走：&#160;&#160;&#160;&#160;&#160; 相信大多数Windows用户应该是使用ActivestatePerl的版本，首先确保它是最新的。安装BioPerl有两种方式：&#160;&#160;&#160;&#160; （1）使用ActivestatePerl的PPM（Perl包管理器）来安装。这种方法速度很慢，如果你机器配置不够好的话只有等着死机。&#160;&#160;&#160;&#160; （2）使用命令行模式安装。这种方法经过我测试，很稳定，强力推荐。注意安装全过程必须要有稳定的Internet连接&#160;&#160;&#160;&#160;&#160; 你需要执行的命令是：&#160;&#160; C:&#62; ppm-shell(回车出现下一行)&#160;&#160; ppm&#62;&#160;&#160; ppm&#62; repo add http://bioperl.org/DIST&#160;&#160; ppm&#62; repo add uwinnipeg&#160;&#160; ppm&#62; repo add trouchelle&#160;&#160; ppm&#62; install BioPerl&#160;&#160;&#160;&#160;&#160; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=213&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://billzt.files.wordpress.com/2010/08/xj_.jpg" alt="" title="xj " class="alignnone size-full wp-image-9" height="53" width="50" /> <b>雪见：</b>Perl的模块有两类，一类是内置在Perl中的，比如小驼书中提到的CGI，File::Basename等，所以你无须另外下载安装这些模块即可使用它们；另一类则是与Perl相分离的，所以你要下载并安装才可以使用它们。很不幸，BioPerl属于后者。而且，安装过程对某些人某些电脑来说不是很容易。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，如果你恰巧跟上了<font color="#cc33cc">因Ubuntu10.04的发行带来的Linux崇拜潮流</font>，已经成功抛弃了Windows Xp转向Ubuntu的话，那么恭喜你，<font color="#ff0000">安装BioPerl和安装gimp之类的应用软件一样简单！</font> <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  打开新立德软件包管理器，输入BioPerl搜索，出现的第一项就是（目前的版本是1.6.1），然后右键点击选择“安装”，系统就会自动把所有依赖的软件包全部安装上。怎么样，是不是很方便呢？而且将来某一天若BioPerl有了更新，可以很方便地使用新立德来升级。
<div align="left">
<div align="center"><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/09/image12.png" /></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然，如果大家都这么方便的话，我就不用写这篇文章啦！对于使用其他Linux和Unix系统的人来说可能未必有这种软件包管理器（即使有，在软件源里也未必有BioPerl的安装文件）。但是所有的类Unix系统应该都支持“源代码编译安装”的方式（这是不少Linux高手自认为很酷的装软件方法，哪怕现在还有好多人在用。新手最好不要用，很容易出现问题）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于这些类Unix系统的用户来说，安装BioPerl和安装一些普通的软件方法是一样的，步骤是：<br />&nbsp;&nbsp;&nbsp;&nbsp; （1）下载BioPerl的源代码，并解压。我提供两个网址：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://bioperl.org/DIST/BioPerl-1.6.1.tar.gz">http://bioperl.org/DIST/BioPerl-1.6.1.tar.gz</a><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://search.cpan.org/CPAN/authors/id/C/CJ/CJFIELDS/BioPerl-1.6.1.tar.gz">http://search.cpan.org/CPAN/authors/id/C/CJ/CJFIELDS/BioPerl-1.6.1.tar.gz</a><br />&nbsp;&nbsp;&nbsp;&nbsp; （2）进入该目录，然后执行下列命令：<br /><font face="monospace">&nbsp;&nbsp;&nbsp; $ perl Build.PL<br />&nbsp;&nbsp;&nbsp; $ ./Build test<br />&nbsp;&nbsp;&nbsp; # ./Build install<br /></font></div>
<p>          &nbsp;&nbsp;&nbsp; <font color="#ff0000">&nbsp; 注意：执行</font><font color="#ff0000" face="monospace">./Build install</font><font color="#ff0000">时必须要有系统管理员权限。</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种方法看起来好像挺简单的，但其实不太容易。因为BioPerl和许多其他模块有依赖关系，所以在安装过程中系统会反复询问你是否要安装XX模块。你最好要在连接Internet的情况下安装才行。如果你只想用BioPerl的核心模块，不想使用额外附加功能，可以选择不安装。但我不敢保证以后使用是否会出现问题。</p>
<div align="center">***********************&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分割线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *******************************
<div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来要处理最麻烦的一种操作系统：Windows。因为在Windows上使用“源代码编译安装”并不容易（<font color="#ff0000">甚至可以说就是不行的！</font>）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你的英文水平还不错，请阅读以下文章：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.bioperl.org/wiki/Installing_Bioperl_on_Windows">http://www.bioperl.org/wiki/Installing_Bioperl_on_Windows</a><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你实在不想看英文，请跟着我走：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相信大多数Windows用户应该是使用ActivestatePerl的版本，首先确保它是最新的。安装BioPerl有两种方式：<br />&nbsp;&nbsp;&nbsp;&nbsp; （1）使用ActivestatePerl的PPM（Perl包管理器）来安装。这种方法速度很慢，如果你机器配置不够好的话只有等着死机。<br />&nbsp;&nbsp;&nbsp;&nbsp; （2）使用命令行模式安装。这种方法经过我测试，很稳定，强力推荐。注意安装全过程必须要有稳定的Internet连接<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你需要执行的命令是：<br /><font face="monospace">&nbsp;&nbsp; C:&gt; ppm-shell<br />(回车出现下一行)<br />&nbsp;&nbsp; ppm&gt;<br />&nbsp;&nbsp; ppm&gt; repo add </font><font color="#000000" face="monospace"><u><a href="http://bioperl.org/DIST" class="external free" title="http://bioperl.org/DIST" rel="nofollow">http://bioperl.org/DIST</a></u></font><font face="monospace"><br />&nbsp;&nbsp; ppm&gt; repo add uwinnipeg<br />&nbsp;&nbsp; ppm&gt; repo add trouchelle<br />&nbsp;&nbsp; ppm&gt; install BioPerl</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意看仔细了，别打错字母！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据小驼书的说法，判断系统上是否已经安装了一个模块，可以尝试使用perldoc命令查看模块的文档。如果能够查阅它的文档，说明已经安装成功了，否则呢，还是自己找一下原因吧！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于BioPerl来说，我们可以查看<font color="#ff0000">其中的一个模块</font>的文档：<br /><font face="monospace">&nbsp;&nbsp; perldoc Bio：：Seq</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">不要自作主张地写成perldoc BioPerl ！找不到的！</font>因为并不存在BioPerl.pm这种模块，它只是一个统称而已。对于Ubuntu用户来说，perldoc这个命令默认没有安装，自己手动把它安装上去即可。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BioPerl安家之后，我们就可以尽情地享受它带来的乐趣。</div>
</div>
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=213&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/18/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e7%ac%ac%e4%b8%80%e7%af%87%ef%bc%9a%e8%ae%a9bioperl%e5%9c%a8%e4%bd%a0%e7%9a%84%e7%94%b5%e8%84%91%e4%b8%8a%e5%ae%89%e5%ae%b6%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/08/xj_.jpg" medium="image">
			<media:title type="html">xj </media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/09/image12.png" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" medium="image" />
	</item>
		<item>
		<title>一叶落而知天下秋</title>
		<link>http://billzt.wordpress.com/2010/09/18/%e4%b8%80%e5%8f%b6%e8%90%bd%e8%80%8c%e7%9f%a5%e5%a4%a9%e4%b8%8b%e7%a7%8b/</link>
		<comments>http://billzt.wordpress.com/2010/09/18/%e4%b8%80%e5%8f%b6%e8%90%bd%e8%80%8c%e7%9f%a5%e5%a4%a9%e4%b8%8b%e7%a7%8b/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 05:58:58 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/18/%e4%b8%80%e5%8f%b6%e8%90%bd%e8%80%8c%e7%9f%a5%e5%a4%a9%e4%b8%8b%e7%a7%8b/</guid>
		<description><![CDATA[——以此纪念2010年京城的第一个秋天 阿天：秋风吹，秋雨飘。2010年9月17日，秋天终于来啦！&#160;&#160;&#160;&#160;&#160; 今年的秋天迟到了两个多礼拜。希望老天爷能多慷慨一些，多赏赐我些许凉意，让我尽情享受这秋高气爽的日子吧！<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=210&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>——以此纪念2010年京城的第一个秋天<br /><img src="http://billzt.files.wordpress.com/2010/08/jt_.jpg" alt="" title="jt " class="alignnone size-full wp-image-10" height="61" width="50" /> <b>阿天</b>：秋风吹，秋雨飘。2010年9月17日，秋天终于来啦！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今年的秋天迟到了两个多礼拜。希望老天爷能多慷慨一些，多赏赐我些许凉意，让我尽情享受这秋高气爽的日子吧！</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=210&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/18/%e4%b8%80%e5%8f%b6%e8%90%bd%e8%80%8c%e7%9f%a5%e5%a4%a9%e4%b8%8b%e7%a7%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/08/jt_.jpg" medium="image">
			<media:title type="html">jt </media:title>
		</media:content>
	</item>
		<item>
		<title>初品BioPerl（序：让程序读起来更生动）</title>
		<link>http://billzt.wordpress.com/2010/09/13/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e5%ba%8f%ef%bc%9a%e8%ae%a9%e7%a8%8b%e5%ba%8f%e8%af%bb%e8%b5%b7%e6%9d%a5%e6%9b%b4%e7%94%9f%e5%8a%a8%ef%bc%89/</link>
		<comments>http://billzt.wordpress.com/2010/09/13/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e5%ba%8f%ef%bc%9a%e8%ae%a9%e7%a8%8b%e5%ba%8f%e8%af%bb%e8%b5%b7%e6%9d%a5%e6%9b%b4%e7%94%9f%e5%8a%a8%ef%bc%89/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 13:38:02 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/13/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e5%ba%8f%ef%bc%9a%e8%ae%a9%e7%a8%8b%e5%ba%8f%e8%af%bb%e8%b5%b7%e6%9d%a5%e6%9b%b4%e7%94%9f%e5%8a%a8%ef%bc%89/</guid>
		<description><![CDATA[苏姐姐：或许在接触BioPerl之前你可能已听说过这个词，但却不明白它是做什么用的。其实，它的用途很简单：让我们的Perl程序读起来更生动一点儿，好听一点儿，易懂一点儿。没错，哪怕你不用BioPerl，同样可以完成相同的任务！而且可能执行的速度更快！但是这样一来，虽然便宜了机器，却苦了我们自己呵！ &#160;&#160;&#160;&#160;&#160; 闲话休提，言归正传。我们来看一个“小驼书”中的例子（强烈建议你在学习BioPerl之前至少把小驼书啃十遍。BioPerl属于高级课题，若根基不稳，学起来是很痛苦嘀！）。&#160;&#160;&#160;&#160;&#160; 在变量$name中存放了一个文件路径名，请取出它的文件基名（basename）和目录名（dirname），再把它们重新连接成完整的文件名（咋一看这个操作很无聊，没关系，这只是个例子而已）。我们应该会写出这样的代码：&#160;&#160;&#160;&#160;&#160; my $name=&#8220;/usr/local/bin/perl&#8221;; &#160;&#160;&#160;&#160;&#160; (my $basename=$name)=~s%.*/%%;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 取出文件基名$basename&#160;&#160;&#160;&#160;&#160; (my $dirname=$name)=~s%(.*)/.*$%$1%;&#160;&#160;&#160;&#160;&#160;&#160; # 取出目录名$dirname&#160;&#160;&#160;&#160;&#160; my $filename=&#8220;$dirname/$basename&#8221;;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 将文件基名和目录名连接起来 &#160;&#160;&#160;&#160;&#160; 说实话，除非你是一等一的高手，否则没有人能一眼就看出来诸如s%.*/%%这样的代码究竟是干什么用的，除非你在旁边加上了详尽的注释，而且你的变量名称取得很有意义（好的Perl程序员一定会这么做）。而且你如果仔细读过小驼书，应该知道上面这段代码不仅难懂晦涩，而且还有BUG。事实上，文件名中是可以包含换行符\n的，所以，正确的写法应该是s%.*/%%s和s%(.*)/.*$%$1%s。不用说，这样一来就更难看啦！&#160;&#160;&#160;&#160;&#160; 好吧，下面我们换用模块试试：&#160;&#160;&#160;&#160; use File::Basename; &#160;&#160;&#160;&#160; use File::Spec;&#160;&#160;&#160;&#160; my $name=&#8220;/usr/local/bin/perl&#8221;;&#160;&#160;&#160;&#160; my $basename = basename $name;&#160;&#160;&#160;&#160; my $dirname = dirname $name;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #现在是动听的名字basename和dirname，而非枯燥的s%.*/%%&#160;&#160;&#160;&#160; my $filename = File::Spec-&#62;catfile($dirname,$basename);&#160;&#160;&#160;&#160;&#160; 现在的代码看起来“好看”多了，我们几乎不用添加额外的注释，就能看出来第四、五、六行代码是干什么的。&#160;&#160;&#160;&#160;&#160; 当然，这样的“好看”是有代价的。&#160;&#160;&#160;&#160;&#160; 首先，你的“记忆力”要足够好。例如开头的use两句，你不能写成use Files::Basename或者use File::basename或者use Basename，那样程序在运行时会报错“找不到文件”，（别忘了虽然正则表达式可以模糊匹配，use语句的文件查找好像还做不到这一点），你只有精确地写出use File::Basename才行。此外，最后一句也不能写成my $filename = catfile($dirname,$basename); ，必须使用“全名”的方式来调用对象的方法才行。（由于“小驼书”中不提对象，而BioPerl中有N多的面向对象的模块。所以初学者会对 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=205&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://billzt.files.wordpress.com/2010/09/sm.jpg" /><b>苏姐姐：</b>或许在接触BioPerl之前你可能已听说过这个词，但却不明白它是做什么用的。其实，它的用途很简单：让我们的Perl程序读起来更生动一点儿，好听一点儿，易懂一点儿。没错，哪怕你不用BioPerl，同样可以完成相同的任务！而且可能执行的速度更快！但是这样一来，虽然便宜了机器，却苦了我们自己呵！ <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 闲话休提，言归正传。我们来看一个“小驼书”中的例子（强烈建议你在学习BioPerl之前至少把小驼书啃十遍。BioPerl属于高级课题，若根基不稳，学起来是很痛苦嘀！）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在变量$name中存放了一个文件路径名，请取出它的文件基名（basename）和目录名（dirname），再把它们重新连接成完整的文件名（咋一看这个操作很无聊，没关系，这只是个例子而已）。我们应该会写出这样的代码：<span style="color:rgb(0,0,170);"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my</span> <span style="color:rgb(170,0,0);">$name</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(170,85,0);">&#8220;/usr/local/bin/perl&#8221;</span>;
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="color:rgb(0,0,170);">my</span> <span style="color:rgb(170,0,0);">$basename</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(170,0,0);">$name</span>)<span style="color:rgb(0,0,0);">=~</span><span style="color:rgb(0,153,153);">s%.*/%%</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(170,170,170);font-style:italic;"># 取出文件基名$basename</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="color:rgb(0,0,170);">my</span> <span style="color:rgb(170,0,0);">$dirname</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(170,0,0);">$name</span>)<span style="color:rgb(0,0,0);">=~</span><span style="color:rgb(0,153,153);">s%(.*)/.*$%$1%</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(170,170,170);font-style:italic;"># 取出目录名$dirname</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,0,170);">my</span> <span style="color:rgb(170,0,0);">$filename</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(170,85,0);">&#8220;$dirname/$basename&#8221;</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(170,170,170);font-style:italic;"># 将文件基名和目录名连接起来</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说实话，除非你是一等一的高手，否则没有人能一眼就看出来诸如<span style="color:rgb(0,0,0);"></span><span style="color:rgb(0,153,153);">s%.*/%%</span>这样的代码究竟是干什么用的，除非你在旁边加上了详尽的注释，而且你的变量名称取得很有意义（好的Perl程序员一定会这么做）。而且你如果仔细读过小驼书，应该知道上面这段代码不仅难懂晦涩，而且还有BUG。事实上，文件名中是可以包含换行符\n的，所以，正确的写法应该是<span style="color:rgb(0,0,0);"></span><span style="color:rgb(0,153,153);">s%.*/%%s</span>和<span style="color:rgb(0,153,153);">s%(.*)/.*$%$1%s</span>。不用说，这样一来就更难看啦！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好吧，下面我们换用模块试试：<br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;">File::</span><span style="color:rgb(0,0,0);">Basename</span>;
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source">&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;">File::</span><span style="color:rgb(0,0,0);">Spec</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">my</span> <span style="color:rgb(51,102,153);">$name</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(221,34,0);background-color:rgb(255,240,240);">&#8220;/usr/local/bin/perl&#8221;</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">my</span> <span style="color:rgb(51,102,153);">$basename</span> <span style="color:rgb(0,0,0);">=</span> <span style="color:rgb(0,0,0);">basename</span> <span style="color:rgb(51,102,153);">$name</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">my</span> <span style="color:rgb(51,102,153);">$dirname</span> <span style="color:rgb(0,0,0);">=</span> <span style="color:rgb(0,0,0);">dirname</span> <span style="color:rgb(51,102,153);">$name</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i><font color="#999999">#现在是动听的名字basename和dirname，而非枯燥的s%.*/%%</font></i><br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:rgb(0,136,0);font-weight:bold;">my</span> <span style="color:rgb(51,102,153);">$filename</span> <span style="color:rgb(0,0,0);">=</span> <span style="color:rgb(187,0,102);font-weight:bold;">File::</span><span style="color:rgb(0,0,0);">Spec</span><span style="color:rgb(0,0,0);">-&gt;</span><span style="color:rgb(0,0,0);">catfile</span>(<span style="color:rgb(51,102,153);">$dirname</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(51,102,153);">$basename</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在的代码看起来“好看”多了，我们几乎不用添加额外的注释，就能看出来第四、五、六行代码是干什么的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然，这样的“好看”是有代价的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，你的“记忆力”要足够好。例如开头的use两句，你不能写成<span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;">Files::</span><span style="color:rgb(0,0,0);">Basename或者</span><span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;">File::</span><span style="color:rgb(0,0,0);">basename或者</span><span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;"></span><span style="color:rgb(0,0,0);">Basename，那样程序在运行时会报错“找不到文件”，（别忘了虽然正则表达式可以模糊匹配，use语句的文件查找好像还做不到这一点），你只有精确地写出</span><span style="color:rgb(0,136,0);font-weight:bold;">use</span> <span style="color:rgb(187,0,102);font-weight:bold;">File::</span><span style="color:rgb(0,0,0);">Basename才行。此外，最后一句也不能写成</span><span style="color:rgb(0,136,0);font-weight:bold;">my</span> <span style="color:rgb(51,102,153);">$filename</span> <span style="color:rgb(0,0,0);">=</span> <span style="color:rgb(0,0,0);">catfile</span>(<span style="color:rgb(51,102,153);">$dirname</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(51,102,153);">$basename</span>); ，必须使用“全名”的方式来<font color="#ff0000"><b>调用对象的方法</b></font>才行。（由于“小驼书”中不提对象，而BioPerl中有N多的面向对象的模块。所以初学者会对 <font color="#ff0000">-&gt;</font> 这样的符号很困惑，请多看几眼哦！）不过，这里所谓的“记忆力”其实在学习一般的Perl编程也是用到的。你既然知道应该拼写成elsif而不是elseif，那么记忆像basename，dirname这样的函数名完全不会太困难！如果实在不想花时间记的话，就查阅文档吧！可惜大部分文档是英文的，若你恰恰英文水平不好的话，就麻烦了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其次，程序加载额外的模块肯定要多费时间。如果程序只有几行（就像上面的例子那样），多费的时间应该不到1毫秒（我自己猜的，没有严格验证过哦）；但如果普通的程序要运行好几个礼拜的话（一般都是有大量的循环），那把它改成用模块编写的（偏偏不巧模块加载就在循环里面），虽然程序变得“好看”了，但却要多花费好几个小时来运行（我有亲身体会！）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过，话又说回来，程序运行慢，累的是机器；程序写得困难，累的是人。究竟你想累机器还是累人？应该具体情况具体分析！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后，为以后要写的BioPerl说几句：<br />&nbsp;&nbsp;&nbsp;&nbsp; （1）我假设你已经熟读了小驼书，熟练地掌握了里面的所有内容。（<b><font color="#ff0000">很重要！Very Important！</font></b>）<br />&nbsp;&nbsp;&nbsp;&nbsp; （2）你不需要看过羊驼书，哪怕你不了解“引用”和“对象”都没关系（其实我也不是很了解）。别忘了我们只是使用BioPerl模块，并不是去深究里面的细节。尽管大部分BioPerl模块都是面向对象的，没关系，尽管用吧！<br />&nbsp;&nbsp;&nbsp;&nbsp; （3）我们只强调“使用”，或许你希望能够修改模块的源代码以更适合自己的风格，但别人会误解的，会认为你是在错误地使用模块！<br />&nbsp;&nbsp;&nbsp;&nbsp; （4）我只写自己比较了解，亲身体验过的内容。要全面了解BioPerl，请查看它的官方教程<a target="_blank" href="http://www.bioperl.org/wiki/HOWTOs">http://www.bioperl.org/wiki/HOWTOs</a>
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" /></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=205&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/13/%e5%88%9d%e5%93%81bioperl%ef%bc%88%e5%ba%8f%ef%bc%9a%e8%ae%a9%e7%a8%8b%e5%ba%8f%e8%af%bb%e8%b5%b7%e6%9d%a5%e6%9b%b4%e7%94%9f%e5%8a%a8%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/09/sm.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/bioperllogo.png" medium="image" />
	</item>
		<item>
		<title>“小驼书”精彩语录（四）</title>
		<link>http://billzt.wordpress.com/2010/09/04/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e5%9b%9b%ef%bc%89/</link>
		<comments>http://billzt.wordpress.com/2010/09/04/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e5%9b%9b%ef%bc%89/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 03:48:02 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/04/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e5%9b%9b%ef%bc%89/</guid>
		<description><![CDATA[月如：——当Larry考虑Perl要提供哪些操作符时，他不想让老的C程序员有机会怀念那些C有而Perl没有的东西。所以他把C所有的操作符都搬过来了（严格说来，他其实舍弃了在Perl中无用的操作符，例如将数字转换为内存地址的操作符。当然他还加上了几个让C程序员嫉妒的操作符，比如字符串连接）。这个决定导致Perl拥有了C语言最让人困惑的操作符，也就是三目？：操作符。 ——如果你不知道文件名和目录名可以包含换行符的话，那就说明你不完全了解这些规则，对吧？ ——许多古老的Unix程序都犯了这个错误，以为 . 和 .. 一定是前两个返回的条目（无论是否排序）。如果你根本没这么想过，请忘记这段脚注，因为这是错误的猜想。事实上，我们现在已经后悔提到它了。 ——Perl的初学者在测试unlink时，常会在建立一个文件后将它chmod成0（这样就无法对它进行读写），看看这是否能导致unlink执行失败，可是结果恰好相反，文件却像肥皂泡一样消失了。 ——有些人知道rm在删除这种文件时通常会提醒用户确认。不过rm是个命令，而unlink则是系统调用。系统调用不需要确认，也从来不说抱歉。 ——如果你真的想看到unlink操作失败，只要试着删除/etc/passwd或类似的系统文件就行了。因为这个文件是由系统管理员控制的，因此你无法将它删除（当然，如果你在尝试这种操作时太粗心，忘了现在正在以系统管理员的身份登录，那是罪有应得）。 ——乍听到排序子程序这个术语时，如果你上过计算机科学的课，脑海中可能会浮现出冒泡排序、希尔排序和快速排序。然后你会说：“拜托，别再谈这些了！”请放心，事情没那么复杂，其实还相当简单。Perl其实知道怎么对列表排序，它只是不知道要用什么样的规则。所以排序子程序只是用来说明具体的规则。 ——在处理更复杂的情况时，智能匹配操作符才会大显身手。比方说，你想在哈希%names中查找任何匹配Fred的键，如果找到就打印一条消息出来。你无法用exists判定。因为它需要给定确定的键。当然，你可以用foreach来遍历每个键，尝试用正则表达式匹配，跳过那些不匹配的，直到发现要找的键，保存到标记变量$flag中，然后用last跳出循环： my $flag=0; foreach my $key (keys %names) { &#160;&#160;&#160; next unless $key =~ /Fred/; &#160;&#160;&#160; $flag = $key; &#160;&#160;&#160; last; &#160;&#160;&#160; } print &#8220;I found a key matching &#8216;Fred&#8217;.It was $flag\n&#8221; if $flag; 唷！这么麻烦，连解释起来都费力，不过这么写也有好处，那就是各种Perl 5 版本都支持。可有了智能匹配操作符，只要把哈希写在左侧，把正则表达式写在右侧，就搞定了。 use 5.010 say &#8220;I found a key [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=199&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/08/yuer.jpg" /> <b>月如：</b><br />——当Larry考虑Perl要提供哪些操作符时，他不想让老的C程序员有机会怀念那些C有而Perl没有的东西。所以他把C所有的操作符都搬过来了（<i>严格说来，他其实舍弃了在Perl中无用的操作符，例如将数字转换为内存地址的操作符。当然他还加上了几个让C程序员嫉妒的操作符，比如字符串连接</i>）。这个决定导致Perl拥有了C语言最让人困惑的操作符，也就是三目？：操作符。</p>
<p>——如果你不知道文件名和目录名可以包含换行符的话，那就说明你不完全了解这些规则，对吧？</p>
<p>——许多古老的Unix程序都犯了这个错误，以为 . 和 .. 一定是前两个返回的条目（无论是否排序）。如果你根本没这么想过，请忘记这段脚注，因为这是错误的猜想。事实上，我们现在已经后悔提到它了。</p>
<p>——Perl的初学者在测试unlink时，常会在建立一个文件后将它chmod成0（这样就无法对它进行读写），看看这是否能导致unlink执行失败，可是结果恰好相反，文件却像肥皂泡一样消失了。</p>
<p>——有些人知道rm在删除这种文件时通常会提醒用户确认。不过rm是个命令，而unlink则是系统调用。系统调用不需要确认，也从来不说抱歉。</p>
<p>——如果你真的想看到unlink操作失败，只要试着删除/etc/passwd或类似的系统文件就行了。因为这个文件是由系统管理员控制的，因此你无法将它删除（<i>当然，如果你在尝试这种操作时太粗心，忘了现在正在以系统管理员的身份登录，那是罪有应得</i>）。</p>
<p>——乍听到排序子程序这个术语时，如果你上过计算机科学的课，脑海中可能会浮现出冒泡排序、希尔排序和快速排序。然后你会说：“拜托，别再谈这些了！”请放心，事情没那么复杂，其实还相当简单。Perl其实知道怎么对列表排序，它只是不知道要用什么样的规则。所以排序子程序只是用来说明具体的规则。</p>
<p>——在处理更复杂的情况时，智能匹配操作符才会大显身手。比方说，你想在哈希%names中查找任何匹配Fred的键，如果找到就打印一条消息出来。你无法用exists判定。因为它需要给定确定的键。当然，你可以用foreach来遍历每个键，尝试用正则表达式匹配，跳过那些不匹配的，直到发现要找的键，保存到标记变量$flag中，然后用last跳出循环：</p>
<p><span style="color:rgb(0,0,170);">my</span> <span style="color:rgb(170,0,0);">$flag</span><span style="color:rgb(0,0,0);">=</span><span style="color:rgb(0,153,153);">0</span>;
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <span style="color:rgb(0,0,170);">foreach</span> <span style="color:rgb(0,0,170);">my</span> <span style="color:rgb(170,0,0);">$key</span> (<span style="color:rgb(0,170,170);">keys</span> <span style="color:rgb(170,0,0);">%names</span>) <span style="color:rgb(0,0,0);">{</span><br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(0,0,170);">next</span> <span style="color:rgb(0,0,170);">unless</span> <span style="color:rgb(170,0,0);">$key</span> <span style="color:rgb(0,0,0);">=~</span><span style="color:rgb(0,153,153);"> /Fred/</span>;<br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(170,0,0);">$flag</span> <span style="color:rgb(0,0,0);">=</span> <span style="color:rgb(170,0,0);">$key</span>;<br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(0,0,170);">last</span>;<br /> &nbsp;&nbsp;&nbsp; <span style="color:rgb(0,0,0);">}</span><br /> <span style="color:rgb(0,0,170);">print</span> <span style="color:rgb(170,85,0);">&#8220;I found a key matching &#8216;Fred&#8217;.It was $flag\n&#8221;</span> <span style="color:rgb(0,0,170);">if</span> <span style="color:rgb(170,0,0);">$flag</span>;</div>
<p>唷！这么麻烦，连解释起来都费力，不过这么写也有好处，那就是各种Perl 5 版本都支持。可有了智能匹配操作符，只要把哈希写在左侧，把正则表达式写在右侧，就搞定了。</p>
<div style="font-family:&quot;color:rgb(0,0,0);background-color:rgb(249,247,237);" class="source"> <span style="color:rgb(0,0,170);">use</span> <span style="color:rgb(0,153,153);">5</span><span style="color:rgb(0,0,0);">.</span><span style="color:rgb(0,153,153);">010</span><br /> <span style="color:rgb(0,0,0);">say</span> <span style="color:rgb(170,85,0);">&#8220;I found a key matching &#8216;Fred&#8217;&#8221;</span> <span style="color:rgb(0,0,170);">if</span> <span style="color:rgb(170,0,0);">%names</span> <span style="color:rgb(0,0,0);">~~</span> <span style="color:rgb(0,153,153);">/Fred/</span>;</div>
<p>——反引号写法要模拟单引号很麻烦，因为变量内插和反斜线转义总是会起效。（<i>所以若要向shell发送反斜线符号，就得连写两个反斜线。因为在windows环境中常需要两个连续的反斜线，就要连写4个。</i>）</p>
<p>——哈希切片是一个<font color="#cc0000">切片</font>而非哈希，如同炉火是指火而非炉，而火炉是指炉而非火。</p>
<p>（完）</p>
<div align="center"><img src="http://billzt.files.wordpress.com/2010/08/perlbook.jpg" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/199/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=199&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/04/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e5%9b%9b%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/08/yuer.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/08/perlbook.jpg" medium="image" />
	</item>
		<item>
		<title>手把手教你怎么把Endnote文献数据库导入到JabRef</title>
		<link>http://billzt.wordpress.com/2010/09/03/%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e6%80%8e%e4%b9%88%e6%8a%8aendnote%e6%96%87%e7%8c%ae%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%bc%e5%85%a5%e5%88%b0jabref/</link>
		<comments>http://billzt.wordpress.com/2010/09/03/%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e6%80%8e%e4%b9%88%e6%8a%8aendnote%e6%96%87%e7%8c%ae%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%bc%e5%85%a5%e5%88%b0jabref/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 01:53:41 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Ubuntu/Linux]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/09/03/%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e6%80%8e%e4%b9%88%e6%8a%8aendnote%e6%96%87%e7%8c%ae%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%bc%e5%85%a5%e5%88%b0jabref/</guid>
		<description><![CDATA[七七：或许你和我一样厌倦了盗版的Endnote（尽管我承认这样的“你”不多哦），想要尝试一下开源且跨平台的JabRef，可是以前留着一堆Endnote的Library，或者老板传给你一个Endnote Library，有办法把它导入到JabRef吗？Of course！ &#160;&#160;&#160;&#160;&#160; 先简单地说下原理吧，我们要做的实际上是把Endnote Library转换成BibTex数据库，因为JabRef认得BibTex。（注意啦：如果你是从网上下载论文引用的，就不要多此一举了，直接选择下载格式为“BibTex”就行啦。我这里说的可是怎么把以前的数据库转换过来哦）&#160;&#160;&#160;&#160;&#160; 好啦，下面由我手把手教你怎么操作：&#160;&#160;&#160;&#160; （1）从官网http://jabref.sourceforge.net/下载JabRef。这是一个Java程序，无须安装，用Java打开它即可。（如果你做不到这一步的话，就问一下身旁的兄弟姐妹们吧，总有人知道的。:) ）&#160;&#160;&#160;&#160; （2）选择Option&#62;Preference，选择显示语言为“Simplified Chinese”，（当然如果你英文足够强的话也可以不选哦！我接下去还是按照中文说明），选择默认编码为“UTF8”。（在Linux上很重要，这关系到中文能否正确显示）&#160;&#160;&#160;&#160;&#160; 接下来很重要，请仔细看啦~~&#160;&#160;&#160;&#160; （3）选择 工具&#62;解开Endnote filter set，这时会弹出一个对话框，如下图所示。 &#160;&#160;&#160;&#160;&#160; 起初，包括我自己在内很多人都会误解，以为这是要选择一个Endnote Library文件（*.enl）。其实不是，这是JabRef要自动生成一个zip压缩文件，里面包含有一些插件，可以给Endnote使用，这样Endnote就可以用这些插件把数据库导出为BibTex格式，这样JabRef就认得它们啦！&#160;&#160;&#160;&#160;&#160; 此时，你可以选择一个保存文件的目录，填入一个以zip为扩展名的文件名，选择“文件格式”为*.zip，点击“Save”，此时会在你所选的目录下产生一个zip文件，如下图所示。 &#160;&#160;&#160;&#160;&#160; 但是，我在用2.6版的JabRef进行类似操作时，却没有任何反应。这应该是程序的BUG。于是乎我换用了2.5版，就能正常操作了。如果你恰恰运气不好，使用2.5版的JabRef还是不能生成文件，那么请点击此处下载：http://bbs.nju.edu.cn/file/B/billzt/Endnote-JabRef_filters.zip&#160;&#160;&#160;&#160; （4）解压该zip文件，把其中的BibTeX Export to JabRef.ens与BibTeX Export to JabRef2.ens复制到Endnote安装目录的Styles目录下面。&#160;&#160;&#160;&#160;&#160; 咦？这样子岂不是还要安装Endnote吗？可是Ubuntu上没法安装Endnote怎么办？没关系，办法多得很。要么可以借用其它装有windows系统的电脑，要么可以在虚拟机里安装Endnote，你甚至还可以在wine中安装Endnote。没关系，我们现在使用Endnote只是为了转换一下以前的数据库，完成之后你就可以大胆地把它卸载。&#160;&#160;&#160;&#160; （5）用Endnote软件打开你需要转换的数据库（一般是enl格式），然后选择File&#62;Export，此时会弹出一个对话框，注意在底下Output一栏中选择Select another style&#8230;，此时会弹出一个Choose A Style对话框，里面有N多种格式可选（如果Endnote是像我这样安装在wine里，打开这个对话框会很慢，请耐心等候），请务必选择BibTeX Export to JabRef。点击“Choose”之后会回到原来的对话框，“文件名”和“文件类型”一栏暂时不要动。点击“保存”，这时会生成一个与原来的Endnote Library文件同名的txt文本文档。 &#160;&#160;&#160;&#160;&#160; （6）打开生成的txt文档，在最后一行加上如下文字：This file was created with JabRef 2.6. Encoding: UTF-8（虽然我不清楚不加上这句话是否影响正常操作，还是加上好），然后把文件扩展名改为bib，以便于JabRef以后读取。此时，一个BibTex数据库文件就完成啦。&#160;&#160;&#160;&#160;&#160; （7）打开JabRef，选择 文件&#62;导入新数据库，导入刚才建立的bib文件，此时会弹出一个警告对话框提示你BibTex键为空。不用理会它，关闭该警告提醒框即可。此时你就会发现所有文献已成功导入JabRef啦。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=194&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://billzt.files.wordpress.com/2010/09/qq.jpg" /><b>七七</b>：或许你和我一样厌倦了盗版的Endnote（尽管我承认这样的“你”不多哦），想要尝试一下开源且跨平台的JabRef，可是以前留着一堆Endnote的Library，或者老板传给你一个Endnote Library，有办法把它导入到JabRef吗？Of course！ <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先简单地说下原理吧，我们要做的实际上是把Endnote Library转换成BibTex数据库，因为JabRef认得BibTex。（<font color="#ff0000">注意啦：如果你是从网上下载论文引用的，就不要多此一举了，直接选择下载格式为“BibTex”就行啦。我这里说的可是怎么把以前的数据库转换过来哦</font>）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好啦，下面由我手把手教你怎么操作：<br />&nbsp;&nbsp;&nbsp;&nbsp; （1）从官网<a target="_blank" href="http://jabref.sourceforge.net/">http://jabref.sourceforge.net/</a>下载JabRef。这是一个Java程序，无须安装，用Java打开它即可。（如果你做不到这一步的话，就问一下身旁的兄弟姐妹们吧，总有人知道的。:) ）<br />&nbsp;&nbsp;&nbsp;&nbsp; （2）选择Option&gt;Preference，选择显示语言为“Simplified Chinese”，（当然如果你英文足够强的话也可以不选哦！我接下去还是按照中文说明），选择默认编码为“UTF8”。（<font color="#ff0000">在Linux上很重要，这关系到中文能否正确显示</font>）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来很重要，请仔细看啦~~<br />&nbsp;&nbsp;&nbsp;&nbsp; （3）选择 工具&gt;解开Endnote filter set，这时会弹出一个对话框，如下图所示。
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/zip.png" /></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 起初，包括我自己在内很多人都会误解，以为这是要选择一个Endnote Library文件（*.enl）。其实不是，这是JabRef要自动生成一个zip压缩文件，里面包含有一些插件，可以给Endnote使用，这样Endnote就可以用这些插件把数据库导出为BibTex格式，这样JabRef就认得它们啦！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此时，你可以选择一个保存文件的目录，填入一个以zip为扩展名的文件名，选择“文件格式”为*.zip，点击“Save”，此时会在你所选的目录下产生一个zip文件，如下图所示。
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/zipfile.png" /></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是，我在用2.6版的JabRef进行类似操作时，却没有任何反应。这应该是程序的BUG。于是乎我换用了2.5版，就能正常操作了。如果你恰恰运气不好，使用2.5版的JabRef还是不能生成文件，那么请点击此处下载：<a target="_blank" href="http://bbs.nju.edu.cn/file/B/billzt/Endnote-JabRef_filters.zip">http://bbs.nju.edu.cn/file/B/billzt/Endnote-JabRef_filters.zip</a><br />&nbsp;&nbsp;&nbsp;&nbsp; （4）解压该zip文件，<font color="#ff0000">把其中的BibTeX Export to JabRef.ens与BibTeX Export to JabRef2.ens复制到Endnote安装目录的Styles目录下面。</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 咦？这样子岂不是还要安装Endnote吗？可是Ubuntu上没法安装Endnote怎么办？没关系，办法多得很。要么可以借用其它装有windows系统的电脑，要么可以在虚拟机里安装Endnote，你甚至还可以在wine中安装Endnote。没关系，我们现在使用Endnote只是为了转换一下以前的数据库，完成之后你就可以大胆地把它卸载。<br />&nbsp;&nbsp;&nbsp;&nbsp; （5）用Endnote软件打开你需要转换的数据库（一般是enl格式），然后选择File&gt;Export，此时会弹出一个对话框，<font color="#ff0000">注意在底下Output一栏中选择Select another style&#8230;</font>，此时会弹出一个Choose A Style对话框，里面有N多种格式可选（如果Endnote是像我这样安装在wine里，打开这个对话框会很慢，请耐心等候），<font color="#ff0000">请务必选择BibTeX Export to JabRef</font>。点击“Choose”之后会回到原来的对话框，“文件名”和“文件类型”一栏暂时不要动。点击“保存”，这时会生成一个与原来的Endnote Library文件同名的txt文本文档。
<div align="center"><img src="http://billzt.files.wordpress.com/2010/09/choosestyle.png" /></p>
<p><img src="http://billzt.files.wordpress.com/2010/09/choose_a_style.png" /></p>
<div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （6）打开生成的txt文档，在最后一行加上如下文字：This file was created with JabRef 2.6. Encoding: UTF-8（虽然我不清楚不加上这句话是否影响正常操作，还是加上好），然后把文件扩展名改为bib，以便于JabRef以后读取。<font color="#000099">此时，一个BibTex数据库文件就完成啦</font>。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （7）打开JabRef，选择 文件&gt;导入新数据库，导入刚才建立的bib文件，此时<font color="#000099">会弹出一个警告对话框提示你BibTex键为空</font>。不用理会它，关闭该警告提醒框即可。此时你就会发现所有文献已成功导入JabRef啦。 <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
</div>
<p></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=194&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/09/03/%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e6%80%8e%e4%b9%88%e6%8a%8aendnote%e6%96%87%e7%8c%ae%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%bc%e5%85%a5%e5%88%b0jabref/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/09/qq.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/zip.png" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/zipfile.png" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/choosestyle.png" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/09/choose_a_style.png" medium="image" />
	</item>
		<item>
		<title>“小驼书”精彩语录（三）</title>
		<link>http://billzt.wordpress.com/2010/08/31/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e4%b8%89%ef%bc%89/</link>
		<comments>http://billzt.wordpress.com/2010/08/31/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e4%b8%89%ef%bc%89/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 01:49:40 +0000</pubDate>
		<dc:creator>billzt</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://billzt.wordpress.com/2010/08/31/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e4%b8%89%ef%bc%89/</guid>
		<description><![CDATA[月如：——不要把正则表达式和shell的文件名通配（glob）混为一谈。在Unix shell中键入*.pm来匹配所有以.pm结尾的文件就是典型的文件名通配。文件名通配使用了许多与正则表达式相同的字符，但这些字符在使用方式上完全不同（文件名通配有时也被叫做模式。不过更糟的是，某些差劲的Unix入门书（可能也刚好是门外汉写的）也称它为正则表达式，其实它们绝对不是。这种说法只会让许多Unix初学者感到困惑）。 ——不过在大多数情况下，现实生活中我们所说的单词是由字母、连字符和缩写符号组成的（起码在英语中是这样的。在ASCII编码的英文中，单引号和缩写符号是一样的，这造成了些麻烦，无法说明cat‘s 是一个带缩写的单词还是单引号末尾的词。没准这就是计算机仍然无法（代替人类）管理世界的原因吧。），所以我们很想改变“单词”的定义。 ——有三个不请自来的捕获变量，不必使用捕捉圆括号就能引入。这看起来真是很不错，但是还有一个坏消息，这些变量的名称很奇怪。&#160;&#160;&#160;&#160;&#160; 虽然Larry可能不反对给它们取比较正常的名字，像$gazoo或$ozmidiar。但是，这些都是你在自己的程序里可能会用到的名称。为了让普通的Perl程序员在为第一个程序的变量命名时，不必绕开Perl所有的特殊变量名，Larry给内置变量起了一些稀奇古怪的名字，也可以说是“惊世骇俗”的名字。在这里用的是标点符号名：$&#38;、$`和$&#8217;。这些名称奇怪、丑陋且诡异，但它们总得有个名字（若你真的无法忍受这些奇怪的名称，可以试试Eglish模块，它会为Perl所有的奇怪变量赋予接近正常的名称。但是，使用这个模块的人一直不多；相反的是，Perl程序员已经逐渐喜爱这些标点符号变量名，无论它们有多么奇怪）。 ——程序结束之后，用户会发现什么呢？他们会说“喔，我懂了。Perl根据我的需要编辑了fred03.dat的内容，而且好心地把原始拷贝备份到fred03.dat.bak文件”。不过我们知道真相，Perl并没有编辑任何文件，它只是创建了一个修改过的新拷贝。趁我们还在盯着他那冒烟的魔术师手杖看的时候，把文件偷偷调了包。真是高明呀！ ——请时刻记住，代码的读者起码分成两类：机器会执行代码，而人会维护代码。如果人都无法理解你写的程序，那么迟早机器也会做错事情。 ——修饰词的两边都只能写单个表达式，因此不能写某事if某事while某事until某事unless某事foreach某事，因为那样太让人困惑了。 ——你可能已经注意到了，这个关键字的拼写居然是elsif，好像缺少了一个e。但是如果你写成具有两个e的elseif，Perl会告诉你拼写错误。为什么呢？因为Larry说了算。（事实上，他坚持这种拼法，甚至拒绝融入另一种拼法的建议。如果你坚持要拼写另一个e也很简单：第一步，发明你自己的语言；第二步，让语言非常流行。如果程序语言是你自己发明的，关键字要怎么拼是你的自由。我们希望你的语言不要拒绝elseunless这样的建议）。 ——for (1..10) {&#160;&#160;&#160;&#160; print “I can count to $_!\n”&#160;&#160; }&#160;&#160;&#160;&#160;&#160; 这是一个纯正的foreach循环，但却用了for关键字。除此以外，本书其他的例子都会写成foreach形式。不过在真实的世界中，你会认为大多数Perl牛仔会多打那四个字母吗？（如果你觉得还是谨慎一点比较好的话，那么你就是还缺少历练。在程序员（尤其是Perl程序员）看来，懒惰是传统美德。如果不信，可以参加下次Perl Monger聚会调查一下。） ——在Perl中有五种循环块。也就是for、foreach、while、until以及裸块（没错，你可以用last来跳出裸块。但这并不意味着可以裸奔回家。） （未完待续）<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=159&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="max-width:800px;" src="http://billzt.files.wordpress.com/2010/08/yuer.jpg" /> <b>月如：</b><br />——不要把正则表达式和shell的文件名通配（glob）混为一谈。在Unix shell中键入*.pm来匹配所有以.pm结尾的文件就是典型的文件名通配。文件名通配使用了许多与正则表达式相同的字符，但这些字符在使用方式上完全不同（<i>文件名通配有时也被叫做模式。不过更糟的是，某些差劲的Unix入门书（可能也刚好是门外汉写的）也称它为正则表达式，其实它们绝对不是。这种说法只会让许多Unix初学者感到困惑</i>）。</p>
<p>——不过在大多数情况下，现实生活中我们所说的单词是由字母、连字符和缩写符号组成的（<i>起码在英语中是这样的。在ASCII编码的英文中，单引号和缩写符号是一样的，这造成了些麻烦，无法说明cat‘s 是一个带缩写的单词还是单引号末尾的词。没准这就是计算机仍然无法（代替人类）管理世界的原因吧。</i>），所以我们很想改变“单词”的定义。</p>
<p>——有三个不请自来的捕获变量，不必使用捕捉圆括号就能引入。这看起来真是很不错，但是还有一个坏消息，这些变量的名称很奇怪。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然Larry可能不反对给它们取比较正常的名字，像$gazoo或$ozmidiar。但是，这些都是你在自己的程序里可能会用到的名称。为了让普通的Perl程序员在为第一个程序的变量命名时，不必绕开Perl所有的特殊变量名，Larry给内置变量起了一些稀奇古怪的名字，也可以说是“惊世骇俗”的名字。在这里用的是标点符号名：$&amp;、$`和$&#8217;。这些名称奇怪、丑陋且诡异，但它们总得有个名字（<i>若你真的无法忍受这些奇怪的名称，可以试试Eglish模块，它会为Perl所有的奇怪变量赋予接近正常的名称。但是，使用这个模块的人一直不多；相反的是，Perl程序员已经逐渐喜爱这些标点符号变量名，无论它们有多么奇怪</i>）。</p>
<p>——程序结束之后，用户会发现什么呢？他们会说“喔，我懂了。Perl根据我的需要编辑了fred03.dat的内容，而且好心地把原始拷贝备份到fred03.dat.bak文件”。不过我们知道真相，Perl并没有编辑任何文件，它只是创建了一个修改过的新拷贝。趁我们还在盯着他那冒烟的魔术师手杖看的时候，把文件偷偷调了包。真是高明呀！</p>
<p>——请时刻记住，代码的读者起码分成两类：机器会执行代码，而人会维护代码。如果人都无法理解你写的程序，那么迟早机器也会做错事情。</p>
<p>——修饰词的两边都只能写单个表达式，因此不能写某事if某事while某事until某事unless某事foreach某事，因为那样太让人困惑了。</p>
<p>——你可能已经注意到了，这个关键字的拼写居然是elsif，好像缺少了一个e。但是如果你写成具有两个e的elseif，Perl会告诉你拼写错误。为什么呢？因为Larry说了算。（<i>事实上，他坚持这种拼法，甚至拒绝融入另一种拼法的建议。如果你坚持要拼写另一个e也很简单：第一步，发明你自己的语言；第二步，让语言非常流行。如果程序语言是你自己发明的，关键字要怎么拼是你的自由。我们希望你的语言不要拒绝elseunless这样的建议</i>）。</p>
<p>——<code>for (1..10) {<br />&nbsp;&nbsp;&nbsp;&nbsp; print “I can count to $_!\n”<br />&nbsp;&nbsp; }</code><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一个纯正的foreach循环，但却用了for关键字。除此以外，本书其他的例子都会写成foreach形式。不过在真实的世界中，你会认为大多数Perl牛仔会多打那四个字母吗？（<i>如果你觉得还是谨慎一点比较好的话，那么你就是还缺少历练。在程序员（尤其是Perl程序员）看来，懒惰是传统美德。如果不信，可以参加下次Perl Monger聚会调查一下。</i>）</p>
<p>——在Perl中有五种循环块。也就是for、foreach、while、until以及裸块（<i>没错，你可以用last来跳出裸块。但这并不意味着可以裸奔回家。</i>）</p>
<p>（未完待续）
<div align="center"><img src="http://billzt.files.wordpress.com/2010/08/perlbook.jpg" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/billzt.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/billzt.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/billzt.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=billzt.wordpress.com&amp;blog=15266536&amp;post=159&amp;subd=billzt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://billzt.wordpress.com/2010/08/31/%e2%80%9c%e5%b0%8f%e9%a9%bc%e4%b9%a6%e2%80%9d%e7%b2%be%e5%bd%a9%e8%af%ad%e5%bd%95%ef%bc%88%e4%b8%89%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0176c8d76735d4636ccc0a07d5b58c60?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">billzt</media:title>
		</media:content>

		<media:content url="http://billzt.files.wordpress.com/2010/08/yuer.jpg" medium="image" />

		<media:content url="http://billzt.files.wordpress.com/2010/08/perlbook.jpg" medium="image" />
	</item>
	</channel>
</rss>
