通过 perl 脚本在文件中就地替换



我想知道如何使用 perl 脚本 rathere而不是命令行替换字符串。我在网上搜索,我尝试了下面的东西。

我有一个文件:

> cat temp
this is one
>

有一个我写的以下脚本:

> cat temp.pl
#!/usr/bin/perl -i.bak
use strict;
use warnings;
my @ARGV=('temp');
$^I = '.bak';
my %hash=("one"=>"1");
{
    while (<>) {
        s/(one)/$hash{$1}/g;
        print;
    }
}
exit;

但是当我尝试执行(>perl temp.pl)时,它只是挂起并且文件也没有更新。我使用的perl版本是5.8.4此外,命令行的东西(perl -pi -e 's/one/1/g' temp)可以完美地工作。我做错了什么吗?

你需要

改变全局@ARGV,并用my你做了词汇@ARGV

use strict;
use warnings;
@ARGV=('temp');
$^I = '.bak';
my %hash=("one"=>"1");
while (<>) {
        s/(one)/$hash{$1}/g;
        print;
}

相关内容

  • 没有找到相关文章

最新更新