在Perl中,我试图逐行读取文件并处理每一行,并根据需要对其进行修改。 到目前为止,我正在阅读的唯一方法就是将文件读入数组,根据需要修改数组中的每个元素,然后在完成时将其输出回文件。如何根据需要修改行来逐行读取文件?
有没有更好的方法来做到这一点,也许某种方式,我可以取代单行,因为我走?
现在,我的处理代码如下所示:
while (my $line = <FILE>)
{
# process line here
# ...........
print FILE $line;
}
我的代码看起来非常接近,但它目前在我行后更换一条线,如此看来,如果我可以将文件指针向上一行,它会写入文件中的正确位置。
我在正确的轨道上吗?我需要从这里做什么来备份文件指针,以便写入我正在阅读的同一行?
编辑:
出我收到的答案,使用local $^I
和Tie::File
都很好地工作。 我最终与Tie::File
一起去,所以我不必打印出文件的每一行。这样,如果脚本中途发生某些事情,我的文件不会混乱。
我的新代码如下所示:
use Tie::File;
chomp(my $filename = $ARGV[0]);
tie my @array, 'Tie::File', $filename or die $!;
foreach my $line(@array)
{
# ...... line processing happens here .......
# ...... $line is automatically written to file if $line is changed .......
}
这正是我在找什么。谢谢! – 2011-01-19 15:42:14