Любая документация для $^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 выходит, чисто или нет, исходный файл не связан.

Другие вопросы по тегам