替换文件内容可以用Tie::File.<br>很好用的,看下perldoc的例子就知道了。对数组的操作就可以直接替换文件。<br>可以用File::Find来search应该替换哪个文件,用Tie::File来修改文件内容。<br><br><div class="gmail_quote">2008/12/7 joe jiang <span dir="ltr"><<a href="mailto:lamp.purl@gmail.com">lamp.purl@gmail.com</a>></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>
> 我想批量替换某些文件的内容,按照learning perl 的方法可以从命令行读入,但是这种情况似乎并不适用于目录嵌套的情况,<br>
><br>
> # from learning perl<br>
> $^I = ".bak"<br>
> while (<>) {<br>
> s/A/B/;<br>
> print;<br>
> }<br>
><br>
> #my code<br>
><br>
><br>
> $^I = '';<br>
> if ( $filename =~ /AAA/i ) {<br>
> open FILE, "<", $filename or die "bla bla bla...";<br>
> while (<FILE>) {<br>
> s/A/B/;<br>
> print;<br>
> }<br>
> }<br>
><br>
><br>
><br>
> 这样还是仅仅打印到STDOUT了,该如何解决,谢谢<br>
><br>
> 注:文件分布于个子目录之下,我是用File::Find遍历查找的,这样的话就只可以使用<FILE>了,为了更灵活一些,我也觉得把一切筛选工作让命令行来解决并不太合适<br>
> <a href="mailto:gtalk%3Afreeespeech@gmail.com">gtalk:freeespeech@gmail.com</a><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><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>