perl的$ ^ I的任何文档?

时间:2013-12-27 23:51:21

标签: regex perl file-io special-variables

我在perl脚本中使用$^I来有条件地搜索和替换。我想知道$^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 个答案:

答案 0 :(得分:8)

来自perlvar

  

$ INPLACE_EDIT

     

$ ^ I

     

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

来自perlrun

  

-i [扩展名]

     

指定由&lt;&gt;处理的文件构造将被就地编辑。它通过重命名输入文件来实现,   按原始名称打开输出文件,然后选择该文件   输出文件作为print()语句的默认值。扩展,如果   提供,用于修改旧文件的名称以进行备份   复制,遵循以下规则:

     

如果没有提供扩展,那么你的   系统支持它,原始文件保持打开状态没有名称   而输出被重定向到原始文件的新文件   文件名。当perl退出时,干净利落或不干净,原始文件是   未链接。