コマンドラインではなく、perl スクリプトを使用して文字列をその場で置き換える方法を知りたかったのです。私はウェブを検索し、以下のことを試しました。
私はファイルを持っています:
> 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 です。コマンド ラインの thing( perl -pi -e 's/one/1/g' temp
) も完全に機能します。私がやっていることに何か問題がありますか?