替换文件内容可以用Tie::File.<br>很好用的,看下perldoc的例子就知道了。对数组的操作就可以直接替换文件。<br>可以用File::Find来search应该替换哪个文件,用Tie::File来修改文件内容。<br><br><div class="gmail_quote">2008/12/7 joe jiang <span dir="ltr">&lt;<a href="mailto:lamp.purl@gmail.com">lamp.purl@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">应该可以用 File::Find 的结果来填充 @ARGV,然后 print 就能配合 $^I 完成你<br>
需要的修改了。<br>
<div><div></div><div class="Wj3C7c"><br>
On 日, 2008-12-07 at 19:06 +0800, owen nirvana wrote:<br>
&gt; 我想批量替换某些文件的内容,按照learning perl 的方法可以从命令行读入,但是这种情况似乎并不适用于目录嵌套的情况,<br>
&gt;<br>
&gt; # from learning perl<br>
&gt; $^I = &quot;.bak&quot;<br>
&gt; while (&lt;&gt;) {<br>
&gt; s/A/B/;<br>
&gt; print;<br>
&gt; }<br>
&gt;<br>
&gt; #my code<br>
&gt;<br>
&gt;<br>
&gt; $^I = &#39;&#39;;<br>
&gt; if ( $filename =~ /AAA/i &nbsp;) {<br>
&gt; open FILE, &quot;&lt;&quot;, $filename or die &quot;bla bla bla...&quot;;<br>
&gt; while (&lt;FILE&gt;) {<br>
&gt; &nbsp; s/A/B/;<br>
&gt; &nbsp;print;<br>
&gt; }<br>
&gt; }<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 这样还是仅仅打印到STDOUT了,该如何解决,谢谢<br>
&gt;<br>
&gt; 注:文件分布于个子目录之下,我是用File::Find遍历查找的,这样的话就只可以使用&lt;FILE&gt;了,为了更灵活一些,我也觉得把一切筛选工作让命令行来解决并不太合适<br>
&gt; <a href="mailto:gtalk%3Afreeespeech@gmail.com">gtalk:freeespeech@gmail.com</a><br>
&gt; _______________________________________________<br>
&gt; China-pm mailing list<br>
&gt; <a href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a><br>
<br>
_______________________________________________<br>
China-pm mailing list<br>
<a href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a></div></div></blockquote></div><br>