UNIX / Linuxバージョンでは、最初の行を変更するだけです。
#!perl -i.bak
.plとの関連付けを作成したWindowsでActivestateperlを使用すると、コマンドラインから直接perlスクリプトを実行できます。
myScript.pl
デフォルトの関連付けを引き続き使用する場合、ファイルのインプレース編集を行うにはどうすればよいですか?
UNIX / Linuxバージョンでは、最初の行を変更するだけです。
#!perl -i.bak
.plとの関連付けを作成したWindowsでActivestateperlを使用すると、コマンドラインから直接perlスクリプトを実行できます。
myScript.pl
デフォルトの関連付けを引き続き使用する場合、ファイルのインプレース編集を行うにはどうすればよいですか?
トリックの質問のように聞こえますが、私はあなたを正しく理解しているのだろうかと思います。
perl -pi.bak myScript.pl myfiletochange
perlを呼び出し、スイッチとスクリプト名を指定するだけで、すぐに使用できます。
さて、これらの余分な引数を提供したくないかもしれません。その場合は、変数$^I
を設定するだけで、インプレース編集がアクティブになります。例えば:
$^I = ".bak"; # will set backup extension
スクリプトを使用するので、次のようなことを行うことができます。
sub edit_in_place
{
my $file = shift;
my $code = shift;
{
local @ARGV = ($file);
local $^I = '';
while (<>) {
&$code;
}
}
}
edit_in_place $file, sub {
s/search/replace/;
print;
};
バックアップを作成する場合は、次のように変更local $^I = '';
します。local $^I = '.bak';