文件描述符如何同时读写

文件描述符如何同时读写

我想批量替换某些文件的内容,按照learning perl 的方法可以从命令行读入,但是这种情况似乎并不适用于目录嵌套的情况,

# from learning perl
$^I = ".bak"
while (<>) {
s/A/B/;
print;
}

#my code


$^I = '';
if ( $filename =~ /AAA/i  ) {
open FILE, "<", $filename or die "bla bla bla...";
while (<FILE>) {
   s/A/B/;
  print;
}
}

这样还是仅仅打印到STDOUT了,该如何解决,谢谢


QUOTE:
原帖由 ztkx 于 2008-12-6 19:23 发表
我想批量替换某些文件的内容,按照learning perl 的方法可以从命令行读入,但是这种情况似乎并不适用于目录嵌套的情况,

# from learning perl
$^I = ".bak"
while () {
s/A/B/;
print;
}

#my code

...



[Copy to clipboard] [ - ]
CODE:
$^I='';
push @ARGV,$filename if $filename =~ /aaa/i;
while (<>) {
   s/A/B/;
   print;
}

一定要通过<>解决吗,兄台给出的代码只解决了过滤文件名的问题,但是问题在于这些文件是分布在不同的子目录下,所以,参数并不是文件名,而是路径名,通过File::Find遍历得到需要处理的文件的
<>读取的文件其实是@ARGV中的内容
所以你可以自己改写@ARGV的内容,然后通过<>读取,涉及$^I的东西只能这么干
如果你嫌麻烦为什么不写一个新的文件,然后替代掉旧文件呢?