在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