perl的$ ^ I的任何文档?

use*_*798 3 regex perl file-io special-variables

我已经$^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;
Run Code Online (Sandbox Code Playgroud)

daw*_*awg 8

来自perlvar

$ INPLACE_EDIT

$ ^我

inplace-edit扩展的当前值.使用undef禁用就地编辑.助记符:-i开关的值.

来自perlrun:

-i [延伸]

指定由<>构造处理的文件将被就地编辑.它通过重命名输入文件,按原始名称打开输出文件,并选择该输出文件作为print()语句的默认值来完成此操作.扩展(如果提供)用于修改旧文件的名称以制作备份副本,遵循以下规则:

如果没有提供扩展,并且您的系统支持它,则原始文件将保持打开状态而没有名称,而输出将重定向到具有原始文件名的新文件.当perl退出时,干净利落或不干净,原始文件被取消链接.