Любая документация для $^I в Perl?
Я использовал $^I
в скрипте perl искать и заменять условно. Я хочу знать, $^I
делает копию файла в буфере и записывает обратно весь буфер обратно в файл после обработки буфера или делает это при редактировании строки.
Код выглядит следующим образом
$^I = "";
my $flag = 0;
while ($line = <>) {
if($line=~ m/some string/i) {
$flag = 1;
}
if(!$flag) {
$line =~ s/string/replace/g;
}
}
print $line;
1 ответ
Из перлвар
$ INPLACE_EDIT
$ ^ I
Текущее значение расширения редактирования на месте. Используйте undef, чтобы отключить редактирование на месте. Мнемоника: значение ключа -i.
Из perlrun:
-i [расширение]
указывает, что файлы, обработанные конструкцией <>, должны редактироваться на месте. Это делается путем переименования входного файла, открытия выходного файла с исходным именем и выбора этого выходного файла в качестве операторов по умолчанию для print(). Расширение, если оно указано, используется для изменения имени старого файла для создания резервной копии, следуя следующим правилам:
Если расширение не указано и ваша система поддерживает его, исходный файл остается открытым без имени, а вывод перенаправляется в новый файл с исходным именем файла. Когда Perl выходит, чисто или нет, исходный файл не связан.