在Perl替换命令中清空Windows

时间:2016-01-20 09:52:05

标签: windows perl shell

我有以下命令:

perl -pi.bak -e "s/pattern//" $file_name

当我在perl脚本中执行它时,它会清空文件(我看到.bak文件,它不是空的)。当我在shell中执行它时,它可以工作。可能是什么问题?

问题出在Windows下,它在Linux下运行良好。

编辑1: 我也尝试了这个,它也清空了:

sub replace_pattern_in_file
{
    my ($file, $pattern, $replacement) = @_;

    open my $in, "<", $file;
    unlink $file;

    open my $out, ">", $file;
    while(my $line = <$in>)
    {
        $line =~ s/$pattern/$replacement/g;
        print $out $line;
    }
}

1 个答案:

答案 0 :(得分:1)

你错了;在Windows和unix系统上的工作方式相同。在任何一种类型的系统中,如果模式完全匹配每一行(包括换行符),您将只获得您描述的行为。

{{1}}