Почему Вы даже рассматриваете набег 10 или 5. Вы хотите производительность здесь. Вы не заботитесь, понижаются ли диски просто, так как это - кэш только.
Просто используйте набег 0 или разделите их. Я думаю отдельный, было бы лучше, так как сбой диска не удалит Ваш весь кэш.
do {
local $^I='.bak'; # see perlvar(1)
local @ARGV=("file");
while(<>){
s/<value>/<value>/ig;
print;
}
};
Остерегайтесь хотя: $^I
как perl's -i
не является отказоустойчивым.
Ваше редактирование кажется довольно простым. Вы рассмотрели просто использование sed с-i опцией?
Попробуйте это, на основе перевода -i
в perldoc perlrun:
use strict;
use warnings;
my $filename = "something";
my $extension = '.orig';
while (<>) {
my $backup;
if ($extension !~ /\*/) {
$backup = $filename . $extension;
}
else {
($backup = $extension) =~ s/\*/$filename/g;
}
rename $filename, $backup;
open my $outfile, '>', $filename;
select $outfile;
s/^\#+// if /value/;
}
continue {
print; # this prints to original filename
}
select STDOUT;
$^I
точный эквивалент для командной строки -i
.
– Randal Schwartz
29 October 2009 в 03:03
используйте File::Inplace
Кроме того, это имеет фиксацию/откат после того, как у Вас будут все свои изменения на месте для файла....