2009年11月6日星期五

[PerlChina] Re: 请教, 这样是不是多个关键字在文件中替换的最优方法?

好的 多谢。

2009/11/7 Qiang (James) <shijialee@gmail.com>
直接 local $/ = undef; 然后打开文件全部读入,直接替换然后重新写入即可。

>       $count=0;
>       while($count<scalar(@keyword)){
>               $_=$C;
>               $C =~ s/@keyword[$count]/@replacekeyword[$count]/gi;
>               $count++;
>       }

这一部分可以用 hash 更省事些。

my %k_to_replace = ( k_1 => 'new_k_1', ... );

for my $k (keys %k_to_replace) {
   $C =~ s/$k/$k_to_replace{$k}/gi;
}

另外,代码里声明变量通常要用 my,还要使用 warnings 和 string; 建议你把这
篇文章先看看 http://wiki.perlchina.org/Use_Strict_And_Warnings

Qiang

Nestle wrote:
> 这样是不是文件多个关键字替换的最佳方法
>
> sub replaceInFile{
>       print "Process File:".$_[0]."\n";
>       undef $/;
>       open TARGET_FILE,$_[0];
>         $C = <TARGET_FILE>;
>       close TARGET_FILE;
>       $/="\n";
>
>       $count=0;
>       while($count<scalar(@keyword)){
>               $_=$C;
>               $C =~ s/@keyword[$count]/@replacekeyword[$count]/gi;
>               $count++;
>       }
>
>       open( FILE, ">$_[0]");
>       print FILE $C;
>       close(FILE);
> }
> >





--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: