<?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://accumulate.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://accumulate.wordpress.com</link>
	<description>不装逼，有啥写啥</description>
	<lastBuildDate>Thu, 09 Apr 2009 05:51:19 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='accumulate.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>累积</title>
		<link>http://accumulate.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://accumulate.wordpress.com/osd.xml" title="累积" />
	<atom:link rel='hub' href='http://accumulate.wordpress.com/?pushpress=hub'/>
		<item>
		<title>perl的grep用法</title>
		<link>http://accumulate.wordpress.com/2009/04/09/perl%e7%9a%84grep%e7%94%a8%e6%b3%95/</link>
		<comments>http://accumulate.wordpress.com/2009/04/09/perl%e7%9a%84grep%e7%94%a8%e6%b3%95/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 05:47:07 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=113</guid>
		<description><![CDATA[grep operator接受一个列表和一个“测试表达式”作为参数。 它从list中一个个的取出元素，然后放到$_变量中。接着在标量环境中，对测试表达式进行估值。如果表达式的结果是true，grep就把$_放到结果list中。 在一个列表环境中，grep operator返回一个列表。在标量环境中，返回列表元素的个数。 my @results = grep EXPR, @input_list; my $count = grep EXPR, @input_list; 这里，EXPR代表任何显式或隐式地引用$_的标量表达式。 例如，要找出list中所有大于10的数（显式的引用$_）： my @input_numbers = (1, 2, 4, 8, 16, 32, 64); my @bigger_than_10 = grep $_ &#62; 10, @input_numbers; 隐式的调用$_（找出所有以4结尾的数字）： my @end_in_4 = grep /4$/, @input_numbers; $_不是列表元素的copy，而是他们的别名，就像foreach中一样。 如果测试表达式逻辑比较复杂，可以封装为函数： my @odd_digit_sum = grep digit_sum_is_odd($_), @input_numbers; sub digit_sum_is_odd { [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=113&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="color:#00aaaa;">grep</span> operator接受一个列表和一个“测试表达式”作为参数。</p>
<p>它从list中一个个的取出元素，然后放到<span style="color:#aa0000;">$_</span>变量中。接着在<strong>标量环境</strong>中，对测试表达式进行估值。如果表达式的结果是<strong>true</strong>，<span style="color:#00aaaa;">grep</span>就把<span style="color:#aa0000;">$_</span>放到结果list中。</p>
<p>在一个列表环境中，<span style="color:#00aaaa;">grep</span> operator返回一个列表。在标量环境中，返回列表元素的个数。<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@results</span> = <span style="color:#00aaaa;">grep</span> EXPR, <span style="color:#aa0000;">@input_list</span>;<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">$count</span> = <span style="color:#00aaaa;">grep</span> EXPR, <span style="color:#aa0000;">@input_list</span>;</code></p>
<p>这里，EXPR代表任何显式或隐式地引用<span style="color:#aa0000;">$_</span>的标量表达式。<br />
例如，要找出list中所有大于10的数（显式的引用<span style="color:#aa0000;">$_</span>）：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@input_numbers</span> = (<span style="color:#009999;">1</span>, <span style="color:#009999;">2</span>, <span style="color:#009999;">4</span>, <span style="color:#009999;">8</span>, <span style="color:#009999;">16</span>, <span style="color:#009999;">32</span>, <span style="color:#009999;">64</span>);<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@bigger_than_10</span> = <span style="color:#00aaaa;">grep</span> <span style="color:#aa0000;">$_</span> &gt; <span style="color:#009999;">10</span>, <span style="color:#aa0000;">@input_numbers</span>;</code></p>
<p>隐式的调用<span style="color:#aa0000;">$_</span>（找出所有以4结尾的数字）：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@end_in_4</span> = <span style="color:#00aaaa;">grep</span> <span style="color:#009999;">/4$/</span>, <span style="color:#aa0000;">@input_numbers</span>;</code></p>
<p><span style="color:#aa0000;">$_</span>不是列表元素的copy，而是他们的别名，就像<span style="color:#0000aa;">foreach</span>中一样。</p>
<p>如果测试表达式逻辑比较复杂，可以封装为函数：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@odd_digit_sum</span> = <span style="color:#00aaaa;">grep</span> digit_sum_is_odd(<span style="color:#aa0000;">$_</span>), <span style="color:#aa0000;">@input_numbers</span>;</code><br />
<code><br />
<span style="color:#0000aa;">sub </span><span style="color:#00aa00;">digit_sum_is_odd</span> {<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">$input</span> = <span style="color:#00aaaa;">shift</span>;<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@digits</span> = <span style="color:#00aaaa;">split</span> <span style="color:#009999;">//</span>, <span style="color:#aa0000;">$input</span>;  <span style="color:#aaaaaa;font-style:italic;"># Assume no nondigit characters</span><br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">$sum</span>;<br />
<span style="color:#aa0000;">$sum</span> += <span style="color:#aa0000;">$_</span> <span style="color:#0000aa;">for</span> <span style="color:#aa0000;">@digits</span>;<br />
<span style="color:#0000aa;">return</span> <span style="color:#aa0000;">$sum</span> <span style="color:#aa0000;">%</span> <span style="color:#aa0000;">2</span>;}</code></p>
<p>除了上面的表达式形式，还有另一种<strong>块</strong>形式。不是显式的定义一个函数，我们可以只把函数的主体部分放在<span style="color:#00aaaa;">grep</span>中。<br />
<strong><span style="color:#ff0000;">注意</span></strong>：块后面<strong>没有</strong>逗号。<br />
<code><br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@odd_digit_sum</span> = <span style="color:#00aaaa;">grep</span> {<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">$input</span> = <span style="color:#aa0000;">$_</span>;<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@digits</span> = <span style="color:#00aaaa;">split</span> <span style="color:#009999;">//</span>, <span style="color:#aa0000;">$input</span>;   <span style="color:#aaaaaa;font-style:italic;"># Assume no nondigit characters</span><br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">$sum</span>;<br />
<span style="color:#aa0000;">$sum</span> += <span style="color:#aa0000;">$_</span> <span style="color:#0000aa;">for</span> <span style="color:#aa0000;">@digits</span>;<br />
<span style="color:#aa0000;">$sum</span> <span style="color:#aa0000;">%</span> <span style="color:#aa0000;">2</span>;<br />
} <span style="color:#aa0000;">@input_numbers</span>;</code></p>
<p>注意这个块和上面函数形式的区别。</p>
<p>再从http://blog.chinaunix.net/u/10363/showart.php?id=51326参照一些例子。</p>
<p><strong>♣剔除list中重复的元素</strong>：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@arr_str</span> = <span style="color:#aa5500;">qw(a ba c a a e f c e)</span>;<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@unique_str</span> = <span style="color:#00aaaa;">grep</span> {++<span style="color:#aa0000;">$count_hash</span>{<span style="color:#aa0000;">$_</span>} &lt; <span style="color:#009999;">2</span>}  <span style="color:#aa0000;">@arr_str</span>;<br />
<span style="color:#0000aa;">print</span> Dumper(<span style="color:#aa0000;">@unique_str</span>);</code></p>
<p><strong>♣找出list中出现两次的元素</strong>：<br />
应用两次grep<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@arr_twice</span> = <span style="color:#00aaaa;">grep</span> {<span style="color:#aa0000;">$count_hash</span>{<span style="color:#aa0000;">$_</span>} == <span style="color:#009999;">2</span>}  <span style="color:#00aaaa;">grep</span> {++<span style="color:#aa0000;">$count_hash</span>{<span style="color:#aa0000;">$_</span>} &gt; <span style="color:#009999;">1</span>} <span style="color:#aa0000;">@arr_str</span>;</code></p>
<p><strong>♣找出当前目录的文本文件</strong>：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@files</span> = <span style="color:#00aaaa;">grep</span> { -f <span style="color:#0000aa;">and</span> -T } <span style="color:#00aaaa;">glob</span> <span style="color:#aa5500;">'* .*'</span>;</code><br />
<span style="color:#00aaaa;">glob</span>返回的是一个文件列表， -f <span style="color:#0000aa;">and</span> -T匹配列表的元素（先判断-f效率高一些）。</p>
<p><strong>♣选择数组元素并消除重复</strong>：<br />
<code><span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@array</span> = <span style="color:#aa5500;">qw(To be or not to be that is the question)</span>;<br />
<span style="color:#0000aa;">my</span> <span style="color:#aa0000;">@found_words</span> =<br />
<span style="color:#00aaaa;">grep</span> { <span style="color:#aa0000;">$_</span> =~<span style="color:#009999;"> /b|o/i</span> <span style="color:#0000aa;">and</span> ++<span style="color:#aa0000;">$counts</span>{<span style="color:#aa0000;">$_</span>} &lt; <span style="color:#009999;">2</span>; } <span style="color:#aa0000;">@array</span>;</code></p>
<br />Posted in perl  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=113&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/04/09/perl%e7%9a%84grep%e7%94%a8%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
		<item>
		<title>正则表达式的历史</title>
		<link>http://accumulate.wordpress.com/2009/04/08/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e7%9a%84%e5%8e%86%e5%8f%b2/</link>
		<comments>http://accumulate.wordpress.com/2009/04/08/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e7%9a%84%e5%8e%86%e5%8f%b2/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 02:30:41 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=106</guid>
		<description><![CDATA[只能大概的把书上内容列一下了。 最初可以追溯到20世纪40年代，有两个神经生理学家建立了一个神经系统的模型。到了多年以后，数学家Stephen Kleene 用代数方法描述了这个模型，并称之为regular sets。并且他设计了一种简单的记号方法来表达regular sets，叫他们为regular expressions。 之后正则表达式被广泛的研究应用。例如Ken Thompson 的qed。 Grep 支持*，但是不支持+和?。 capturing metacharacters是\(⋯\) 不支持alternation。 括号只能用来capturing匹配的文本。 EGrep 不仅支持+和?，还可以应用到被括号围着的表达式。 POSIX 把各种不同的正则表达式flavor归结为两种，Basic Regular Expressions (BREs), and Extended Regular Expressions (EREs)。 Regex feature BREs EREs dot, ^, $, [⋯], [^⋯] √ √ &#8220;any number&#8221; quantifier * * + and ? quantifiers + ? range quantifier \{min,max\} {min,max} grouping [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=106&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>只能大概的把书上内容列一下了。<br />
最初可以追溯到20世纪40年代，有两个神经生理学家建立了一个神经系统的模型。到了多年以后，数学家Stephen Kleene 用代数方法描述了这个模型，并称之为<em>regular sets</em>。并且他设计了一种简单的记号方法来表达<em>regular sets</em>，叫他们为<em>regular expressions</em>。<br />
之后正则表达式被广泛的研究应用。例如<a href="en.wikipedia.org/wiki/Ken_Thompson" target="_blank">Ken Thompson</a> 的<em>qed</em>。</p>
<p><strong>Grep</strong></p>
<ul>
<li> 支持*，但是不支持+和?。</li>
<li>capturing metacharacters是\(⋯\)</li>
<li>不支持alternation。</li>
<li>括号只能用来capturing匹配的文本。</li>
</ul>
<p><strong>EGrep</strong></p>
<ul>
<li> 不仅支持+和?，还可以应用到被括号围着的表达式。</li>
</ul>
<p><strong><a href="http://en.wikipedia.org/wiki/POSIX" target="_blank">POSIX</a></strong></p>
<p>把各种不同的正则表达式flavor归结为两种，<span class="docEmphasis">Basic Regular Expressions</span><a name="IDX-CHP-3-0469"></a> <a name="IDX-CHP-3-0470"></a>(BREs), and <span class="docEmphasis">Extended Regular Expressions</span><a name="IDX-CHP-3-0471"></a> <a name="IDX-CHP-3-0472"></a>(EREs)。</p>
<table border="1" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="240" valign="top"><strong>Regex feature</strong></td>
<td width="80" valign="top"><strong>BREs</strong></td>
<td width="80" valign="top"><strong>EREs</strong></td>
</tr>
<tr>
<td width="240" valign="top">dot, ^, $, [⋯], [^⋯]</td>
<td width="80" valign="top">√</td>
<td width="80" valign="top">√</td>
</tr>
<tr>
<td width="240" valign="top">&#8220;any number&#8221; quantifier</td>
<td width="80" valign="top">*</td>
<td width="80" valign="top">*</td>
</tr>
<tr>
<td width="240" valign="top">+ and ? quantifiers</td>
<td width="80" valign="top"></td>
<td width="80" valign="top">+ ?</td>
</tr>
<tr>
<td width="240" valign="top">range quantifier</td>
<td width="80" valign="top">\{min,max\}</td>
<td width="80" valign="top">{min,max}</td>
</tr>
<tr>
<td width="240" valign="top">grouping</td>
<td width="80" valign="top">\(⋯\)</td>
<td width="80" valign="top">(⋯)</td>
</tr>
<tr>
<td width="240" valign="top">can apply quantifiers to parentheses</td>
<td width="80" valign="top">√</td>
<td width="80" valign="top">√</td>
</tr>
<tr>
<td width="240" valign="top">backreferences</td>
<td width="80" valign="top">\1 through \9</td>
<td width="80" valign="top"></td>
</tr>
<tr>
<td width="240" valign="top">alternation</td>
<td width="80" valign="top"></td>
<td width="80" valign="top">√</td>
</tr>
</tbody>
</table>
<p>1986年，Henry Spencer 用C写了正则表达式库。接着Larry Wall发明了Perl，一版又一版的改进了正则表达式，加了一坨特性。</p>
<p>还要注意，每种语言提供的正则表达式有不同的flavor。<br />
每种不同语言有不同的方式来实现正则表达式：集成的（integrated）、过程式的（procedural）和面向对象式的（object-oriented）。<br />
集成的代表是Perl。<br />
<strong>优点</strong>是简化了程序员的工作，因为它隐藏了一些机制，例如准备正则表达式，建立匹配，应用正则表达式，然后得到结果。<br />
隐藏这些细节也有<strong>不利之处</strong>，在一些情况下，导致效率低下，处理不灵活。</p>
<br />Posted in 正则表达式  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=106&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/04/08/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e7%9a%84%e5%8e%86%e5%8f%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
		<item>
		<title>Vim中的列编辑</title>
		<link>http://accumulate.wordpress.com/2009/04/07/vim%e4%b8%ad%e7%9a%84%e5%88%97%e7%bc%96%e8%be%91/</link>
		<comments>http://accumulate.wordpress.com/2009/04/07/vim%e4%b8%ad%e7%9a%84%e5%88%97%e7%bc%96%e8%be%91/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 06:52:17 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=97</guid>
		<description><![CDATA[http://bbs.chinaunix.net/viewthread.php?tid=157540 定位光标 CTRL+v            #进入Visual Mode。（Windows下用CTRL+Q） j                       #选择要在哪些行加入？ I                       #一定是大写！ 输入要插入的文本 ESC Posted in Vim<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=97&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>http://bbs.chinaunix.net/viewthread.php?tid=157540</p>
<ol>
<li>定位光标</li>
<li> CTRL+v            #进入Visual Mode。（<span style="color:#ff0000;">Windows下用CTRL+Q</span>）</li>
<li>j                       #选择要在哪些行加入？</li>
<li>I                       #一定是<span style="color:#ff0000;">大写</span>！</li>
<li>输入要插入的文本</li>
<li>ESC</li>
</ol>
<br />Posted in Vim  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=97&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/04/07/vim%e4%b8%ad%e7%9a%84%e5%88%97%e7%bc%96%e8%be%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir是个不错的东东</title>
		<link>http://accumulate.wordpress.com/2009/04/02/watir%e6%98%af%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84%e4%b8%9c%e4%b8%9c/</link>
		<comments>http://accumulate.wordpress.com/2009/04/02/watir%e6%98%af%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84%e4%b8%9c%e4%b8%9c/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 06:54:23 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=85</guid>
		<description><![CDATA[想写一个程序，模拟IE的各种动作。曾经用过VBA实现过类似的功能，访问一个网页，模拟点击“印刷”，把网页的内容保存为Pdf文件。当然，使用了PDFCreator。 但是总觉得VBA太丑了，不想用。然后想到了Python，因为最近开始学习Python的缘故。但是Python3.0对pywin32什么的没什么支持。然后想到了Perl,上网搜索了一下，用了use Win32::OLE。 在公司的机器(Windows XP SP3, activeperl5.8.9)跑的是好好的，就差回去找找匹配中文正则表达式的问题。 但是在家里的机器，始终出问题。 试了几次，发现问题出在 $IE-&#62;{visible} = 1; 这个语句上。在家里的机器(Vista Ultimate SP1，activeperl5.8.9)上，会打开两个IE窗口，一个是指定的URL，一个是空白的IE，在试图打开什么网页，但是始终打不开的样子。然后导致后面的语句执行出问题。 如果注释掉这个语句，就只打开制定的网页，但是似乎还报别的错误（记不清楚了）。 补：终于找到原因了。在家里面下面的Watir的代码也不能运行，错误和上面的一样。查了一下，找到原因了。 Try one of these: Change your ruby permissions to &#8220;run as administrator&#8221;; or Disable User Access Control; or Turn off Internet Explorer Protected Mode 我就“以管理员身份运行”cmd.exe，然后在运行script。 早上想到Ruby似乎也有类似Perl 的Win32::OLE 的库，搜索了一下，发现了更好的Watir。似乎更多的是作为Web测试的，比如，这篇，这篇。哎，刚刚大概看了一下，真是一个好东东啊，哈哈：）。这里还有很多例子。 文档和示例都不错，以后可以Web的测试就能自动化一点了？ 下面是一段小代码，自动打开IE访问google，用高级搜索设置搜索关键字，每页显式20条结果： require 'watir' ie = Watir::IE.new ie.goto(&#8216;http://www.google.com/&#8217;) #click the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=85&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>想写一个程序，模拟IE的各种动作。曾经用过VBA实现过类似的功能，访问一个网页，模拟点击“印刷”，把网页的内容保存为Pdf文件。当然，使用了<a title="PDFCreator" href="http://sourceforge.net/projects/pdfcreator/" target="_blank">PDFCreator</a>。</p>
<p>但是总觉得VBA太丑了，不想用。然后想到了Python，因为最近开始学习Python的缘故。但是Python3.0对pywin32什么的没什么支持。然后想到了Perl,上网搜索了一下，用了use Win32::OLE。<br />
在公司的机器(Windows XP SP3, activeperl5.8.9)跑的是好好的，就差回去找找匹配中文正则表达式的问题。<br />
但是在家里的机器，始终出问题。<br />
试了几次，发现问题出在<br />
<code><span style="color:#aa0000;">$IE</span>-&gt;{visible} = <span style="color:#009999;">1</span>;</code><br />
这个语句上。在家里的机器(Vista Ultimate SP1，activeperl5.8.9)上，会打开两个IE窗口，一个是指定的URL，一个是空白的IE，在试图打开什么网页，但是始终打不开的样子。然后导致后面的语句执行出问题。<br />
如果注释掉这个语句，就只打开制定的网页，但是似乎还报别的错误（记不清楚了）。</p>
<p><strong><span style="color:#ff0000;">补：终于找到原因了</span></strong>。在家里面下面的Watir的代码也不能运行，错误和上面的一样。查了一下，找到<a href="http://wiki.openqa.org/display/WTR/FAQ#FAQ-WhatshouldIdoiftwobrowserwindowsappearwhenrunningatestunderWindowsVista%3F" target="_blank">原因</a>了。<br />
Try one of these:</p>
<ul>
<li>Change your ruby permissions to &#8220;run as administrator&#8221;; or</li>
<li>Disable User Access Control; or</li>
<li>Turn off Internet Explorer Protected Mode</li>
</ul>
<p>我就“以管理员身份运行”cmd.exe，然后在运行script。</p>
<p>早上想到Ruby似乎也有类似Perl 的Win32::OLE 的库，搜索了一下，发现了更好的<a title="wtr" href="http://wtr.rubyforge.org/" target="_blank">Watir</a>。似乎更多的是作为Web测试的，比如，<a href="http://www.codeproject.com/KB/cross-platform/RubyTestExecutor.aspx" target="_blank">这篇</a>，<a href="http://jimhmatthews.wordpress.com/2007/10/28/how-to-start-writing-web-test-scripts-with-ruby-and-watir/" target="_blank">这篇</a>。哎，刚刚大概看了一下，真是一个好东东啊，哈哈：）。这里还有很多例子。<br />
文档和示例都不错，以后可以Web的测试就能自动化一点了？</p>
<p>下面是一段小代码，自动打开IE访问google，用高级搜索设置搜索关键字，每页显式20条结果：<br />
<code><br />
<span style="color:#00aaaa;">require</span> <span style="color:#aa5500;">'watir'</span></code></p>
<p>ie = <span style="color:#aa0000;">Watir</span>::<span style="color:#aa0000;">IE</span>.new<br />
ie.goto(<span style="color:#aa5500;">&#8216;http://www.google.com/&#8217;</span>)</p>
<p><span style="color:#aaaaaa;font-style:italic;">#click the &#8216;Advanced Search&#8217; link</span><br />
ie.link(<span style="color:#0000aa;">:text</span>, <span style="color:#aa5500;">&#8216;Advanced Search&#8217;</span>).click</p>
<p><span style="color:#aaaaaa;font-style:italic;">#set search value, textbox &#8216;all these words:&#8217;</span><br />
ie.text_field(<span style="color:#0000aa;">:name</span>, <span style="color:#aa5500;">&#8216;as_q&#8217;</span>).set <span style="color:#aa5500;">&#8216;ruby&#8217;</span><br />
<span style="color:#aaaaaa;font-style:italic;">#set &#8216;Results per page&#8217; to 20</span><br />
ie.select_list(<span style="color:#0000aa;">:name</span>, <span style="color:#aa5500;">&#8216;num&#8217;</span>).select <span style="color:#aa5500;">&#8217;20 results&#8217;</span><br />
<span style="color:#aaaaaa;font-style:italic;">#submit the form</span><br />
ie.form(<span style="color:#0000aa;">:name</span>, <span style="color:#aa5500;">&#8216;f&#8217;</span>).submit</p>
<p>要注意的是select列表设值的时候，select后面的值是option的<strong>text值</strong>。</p>
<br />Posted in ruby  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=85&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/04/02/watir%e6%98%af%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84%e4%b8%9c%e4%b8%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
		<item>
		<title>正则表达式之lookaround</title>
		<link>http://accumulate.wordpress.com/2009/04/01/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8blookaround/</link>
		<comments>http://accumulate.wordpress.com/2009/04/01/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8blookaround/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 03:07:11 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=34</guid>
		<description><![CDATA[正则表达式中的lookaround，类似形如\b、^、或者$这样的metacharacters，它们不匹配文本，而是匹配文本中的位置。 lookaround又分为lookahead和lookbehind。 (&#62;=Jeffrey)匹配下面的标记的位置： by Jeffrey Friedl 书中有个例子，把Jeffs替换为Jeff&#8217;s。 方法 解释 s/\bJeffs\b/Jeff&#8217;s/g 最直接的方法 s/\b(Jeff)(s)\b/$1&#8242;$2/g 杀鸡用牛刀 s/\bJeff(?=s\b)/Jeff&#8217;/g 按照作者的意思，只是为了说明lookahead，实际用处不大 s/(?&#60;=\bJeff)(?=s\b)/&#8217;/g 这个表达式没有consume任何文本，它找到这样的一个位置——前面是一个单词起始，紧接着Jeff，后面是字符s，紧接着单词的起始。然后把这个位置替换为引号&#8217; s/(?=s\b)(?&#60;=\bJeff)/&#8217;/g 和上面的类似，只不过两个字表达式的顺序颠倒了一下，因为他们并不consume文本，所以顺序是无关的。 接着是一个实际的例子，把数字转化为特定的格式：#,###,###。 思路就是： 找到这样的一个位置——它的左边有数字，右边是n个3位一组的数字(n&#62;=1)。 $pop =~ s/(?&#60;=\d)(?=(\d\d\d)+$)/,/g; 如果不加最后的$，会解释为：左边有一个数字，右边至少有3位数字。结果就如下： 1,2,3,4,5,678 当然，如果分组不对，同样有问题。 lookaround还有相应的“否定”形式：(?&#60;!&#8230;&#8230;)和(?!......) TODO undef $/; Posted in 正则表达式<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=34&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>正则表达式中的lookaround，类似形如\b、^、或者$这样的metacharacters，它们<strong>不匹配</strong>文本，<strong>而是匹配</strong>文本中的<strong>位置</strong>。</p>
<p>lookaround又分为lookahead和lookbehind。<br />
(&gt;=Jeffrey)匹配下面的标记的位置：<br />
by <img class="alignnone size-full wp-image-31" title="reg" src="http://accumulate.files.wordpress.com/2009/03/reg.png?w=600" alt="reg"   />Jeffrey Friedl</p>
<p>书中有个例子，把Jeffs替换为Jeff&#8217;s。</p>
<table border="1" cellspacing="0" cellpadding="2" width="450">
<tbody>
<tr>
<td width="150" align="center" valign="top"><strong>方法</strong></td>
<td width="300" align="center" valign="top"><strong>解释</strong></td>
</tr>
<tr>
<td width="150" valign="top"><span style="color:#009999;">s/\bJeffs\b/Jeff&#8217;s/g</span></td>
<td width="300" valign="top">最直接的方法</td>
</tr>
<tr>
<td width="150" valign="top"><span style="color:#009999;">s/\b(Jeff)(s)\b/$1&#8242;$2/g</span></td>
<td width="300" valign="top">杀鸡用牛刀</td>
</tr>
<tr>
<td width="150" valign="top"><span style="color:#009999;">s/\bJeff(?=s\b)/Jeff&#8217;/g</span></td>
<td width="300" valign="top">按照作者的意思，只是为了说明lookahead，实际用处不大</td>
</tr>
<tr>
<td width="150" valign="top"><span style="color:#009999;">s/(?&lt;=\bJeff)(?=s\b)/&#8217;/g</span></td>
<td width="300" valign="top">这个表达式没有consume任何文本，它找到这样的一个位置——前面是一个单词起始，紧接着Jeff，后面是字符s，紧接着单词的起始。然后把这个位置替换为引号&#8217;</td>
</tr>
<tr>
<td width="150" valign="top"><span style="color:#009999;">s/(?=s\b)(?&lt;=\bJeff)/&#8217;/g</span></td>
<td width="300" valign="top">和上面的类似，只不过两个字表达式的顺序颠倒了一下，因为他们并不consume文本，所以顺序是无关的。</td>
</tr>
</tbody>
</table>
<p><span style="color:#000000;">接着是一个实际的例子，把数字转化为特定的格式：#,###,###。</span></p>
<p><span style="color:#009999;"><span style="color:#000000;">思路就是：</span></span></p>
<p><span style="color:#009999;"><span style="color:#000000;">找到这样的一个位置——它的左边有数字，右边是n个3位一组的数字(n&gt;=1)。</span></span></p>
<p><code><span style="color:#aa0000;">$pop</span> =~ <span style="color:#009999;">s/(?&lt;=\d)(?=(\d\d\d)+$)/,/g</span>;</code></p>
<p>如果不加最后的$，会解释为：<em>左边有一个数字，右边至少有3位数字。结果就如下</em>：<br />
1,2,3,4,5,678</p>
<p>当然，如果分组不对，同样有问题。</p>
<p class="docText">lookaround还有相应的“否定”形式：(?&lt;!&#8230;&#8230;)和(<tt>?!......</tt>)</p>
<p class="docText">
<p><span style="color:#ff0000;">TODO</span><br />
undef $/;</p>
<br />Posted in 正则表达式  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=34&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/04/01/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8blookaround/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>

		<media:content url="http://accumulate.files.wordpress.com/2009/03/reg.png" medium="image">
			<media:title type="html">reg</media:title>
		</media:content>
	</item>
		<item>
		<title>正则表达式之匹配和修改</title>
		<link>http://accumulate.wordpress.com/2009/03/31/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8b%e5%8c%b9%e9%85%8d%e5%92%8c%e4%bf%ae%e6%94%b9/</link>
		<comments>http://accumulate.wordpress.com/2009/03/31/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8b%e5%8c%b9%e9%85%8d%e5%92%8c%e4%bf%ae%e6%94%b9/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 05:25:06 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=28</guid>
		<description><![CDATA[示例均为Perl代码 测试匹配的用法： $variable =~ m/regex/ 每个用括号包围着的，匹配成功的部分，会被分别保存到变量$1, $2, $3&#8230;中。 如果不想分组，就用(?:⋯) 修改匹配的用法： $var =~ s/regex/replacement/ 书上的一个例子 $price =~ s/(\.\d\d[1-9]?)\d*/$1/ 这会把12.25618替换为12.256。但是如果写成 $price =~ s/\.(\d\d[1-9]?)\d*/$1/ 则结果是12256（这不是废话吗，呃，我开始就是这么写错的。。。） 在命令行运行Perl程序 详细的可以参考perlrun 书上给出的例子如下 % perl -p -i -e 's/sysread/read/g' file -e： 在命令行执行一个单行的程序。一旦指定的这个Switch，perl会在参数列表中寻找一个文件名。 -p： 对参数列表中的文件每行进行操作。 -i: 对参数列表的文件进行in-place的编辑。 书上的例子似乎有问题，至少在Windows下要指定备份文件的名（或者仅仅是后缀？） Switch可以连着写。-p  -i.bak等价于 -pi.bak。 例如，删除文件中的空白行： 类似于sed，会在终端回显结果 perl -p -e "s/^\s*$//g" bl.txt in-place的编辑 perl -pi.bak -e "s/^\s*$//g" bl.txt [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=28&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>示例均为Perl代码</p>
<p><strong>测试匹配的用法</strong>：</p>
<p><code>$variable =~ <span style="color:#0000ff;">m/regex/</span></code><br />
每个用括号包围着的，匹配成功的部分，会被分别保存到变量$1, $2, $3&#8230;中。<br />
如果不想分组，就用(?:<span style="color:#a61717;background-color:#e3d2d2;">⋯</span>)</p>
<p><strong>修改匹配的用法</strong>：<br />
<code>$var =~ <span style="color:#0000ff;">s/regex/replacement/</span></code></p>
<p>书上的一个例子<br />
<code>$price =~ <span style="color:#0000ff;">s/(\.\d\d[1-9]?)\d*/$1/</span></code><br />
<span style="color:#000000;">这会把12.25618替换为12.256。但是如果写成</span><br />
<code>$price =~ <span style="color:#0000ff;">s/\.(\d\d[1-9]?)\d*/$1/</span></code></p>
<p>则结果是12256（这不是废话吗，呃，我开始就是这么写错的。。。）</p>
<p><span style="color:#000000;"><br />
</span></p>
<p><strong>在命令行运行Perl程序</strong></p>
<p>详细的可以参考<a title="perlrun" href="http://perldoc.perl.org/5.8.9/perlrun.html" target="_blank">perlrun</a><br />
书上给出的例子如下<br />
<code>% perl -p -i -e <span style="color:#0000ff;">'s/sysread/read/g'</span> file</code></p>
<ul>
<li><strong>-e</strong>： 在命令行执行一个单行的程序。一旦指定的这个Switch，perl会在参数列表中寻找一个文件名。</li>
<li><strong>-p</strong>： 对参数列表中的文件每行进行操作。</li>
<li><strong>-i:</strong> 对参数列表的文件进行<em>in-place</em>的编辑。</li>
</ul>
<p>书上的例子似乎有问题，至少在Windows下要指定备份文件的名（<span style="color:#ff0000;">或者仅仅是后缀？</span>）</p>
<p>Switch可以连着写。-p  -i.bak等价于 -pi.bak。<br />
例如，删除文件中的空白行：</p>
<p>类似于sed，会在终端回显结果<br />
<code>perl -p -e <span style="color:#aa5500;">"s/^\s*$//g"</span> bl.txt</code><br />
<em>in-place</em>的编辑<br />
<code>perl -pi.bak -e <span style="color:#aa5500;">"s/^\s*$//g"</span> bl.txt</code><br />
原先的文件名加了后缀.bak</p>
<br />Posted in perl, 正则表达式 Tagged: perl, 正则表达式 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=28&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/03/31/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8b%e5%8c%b9%e9%85%8d%e5%92%8c%e4%bf%ae%e6%94%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
		<item>
		<title>adsl的自动拨号</title>
		<link>http://accumulate.wordpress.com/2009/03/31/adsl%e7%9a%84%e8%87%aa%e5%8a%a8%e6%8b%a8%e5%8f%b7/</link>
		<comments>http://accumulate.wordpress.com/2009/03/31/adsl%e7%9a%84%e8%87%aa%e5%8a%a8%e6%8b%a8%e5%8f%b7/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 03:32:40 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=36</guid>
		<description><![CDATA[如果需要快速的切换IP，而不手动的关闭连接，重新连接，可以用下面的方法： @rasdial 宽带连接 /DISCONNECT @rasdial 宽带连接 account  pwd 保存为bat文件执行即可。 其中的“宽带连接”是自己的宽带连接名字，我这里是就是下图红色的部分。 Posted in Uncategorized<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=36&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>如果需要快速的切换IP，而不手动的关闭连接，重新连接，可以用下面的方法：</p>
<p>@rasdial 宽带连接 /DISCONNECT<br />
@rasdial 宽带连接 account  pwd</p>
<p>保存为bat文件执行即可。</p>
<p>其中的“宽带连接”是自己的宽带连接名字，我这里是就是下图红色的部分。</p>
<p><img class="alignnone size-full wp-image-37" title="adsl" src="http://accumulate.files.wordpress.com/2009/03/adsl.png?w=600" alt="adsl"   /></p>
<br />Posted in Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=36&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/03/31/adsl%e7%9a%84%e8%87%aa%e5%8a%a8%e6%8b%a8%e5%8f%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>

		<media:content url="http://accumulate.files.wordpress.com/2009/03/adsl.png" medium="image">
			<media:title type="html">adsl</media:title>
		</media:content>
	</item>
		<item>
		<title>开始正则表达式</title>
		<link>http://accumulate.wordpress.com/2009/03/29/%e5%bc%80%e5%a7%8b%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/</link>
		<comments>http://accumulate.wordpress.com/2009/03/29/%e5%bc%80%e5%a7%8b%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 15:22:32 +0000</pubDate>
		<dc:creator>没有昵称</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://accumulate.wordpress.com/?p=23</guid>
		<description><![CDATA[就用JeffreyE.F.Friedl的Mastering Regular Expressions开始系统的学学正则表达式吧。 第一章用egrep作为工具介绍了正则表达式的概念。 主要的概念就是MetaCharacter，characterClass。详细介绍了几种MetaCharacter。例如通配符（?+*）。 另外需要注意的就是字符是否是MetaCharacter，取决于它所使用的地方。例如dot（.）就是一个MetaCharacter，匹配任意一个字符（多数情况下除了换行符）。但是如果在characterClass中，他就是一个普通的字符，仅仅代表字符.。 另外纠正一个自己长久以来的错误观念。如果要查找匹配字符串abc的行，我原以为必须： grep  -E  '^.*abc.*$' filename 原来只需要：grep  -E  'abc' filename。 鄙视自己一下，真是白痴 Posted in 编程 Tagged: 正则表达式<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=23&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>就用JeffreyE.F.Friedl的Mastering Regular Expressions开始系统的学学正则表达式吧。</p>
<p>第一章用egrep作为工具介绍了正则表达式的概念。</p>
<p>主要的概念就是MetaCharacter，characterClass。详细介绍了几种MetaCharacter。例如通配符（?+*）。</p>
<p>另外需要注意的就是字符是否是MetaCharacter，取决于它所使用的地方。例如dot（.）就是一个MetaCharacter，匹配任意一个字符（多数情况下除了换行符）。但是如果在characterClass中，他就是一个普通的字符，仅仅代表字符<strong>.</strong>。</p>
<p>另外纠正一个自己长久以来的错误观念。如果要查找匹配字符串abc的行，我原以为必须：</p>
<p><code>grep  -E  <span style="color:#aa5500;">'^.*abc.*$'</span> filename</p>
<p>原来只需要：<code>grep  -E  <span style="color:#aa5500;">'abc'</span> filename</code>。</p>
<p>鄙视自己一下，真是白痴</p>
<br />Posted in 编程 Tagged: 正则表达式 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accumulate.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accumulate.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accumulate.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=accumulate.wordpress.com&amp;blog=7004032&amp;post=23&amp;subd=accumulate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://accumulate.wordpress.com/2009/03/29/%e5%bc%80%e5%a7%8b%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a76d60ee1fbf4a6224008266f2a827fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">没有昵称</media:title>
		</media:content>
	</item>
	</channel>
</rss>
