3

UNIX / Linuxバージョンでは、最初の行を変更するだけです。

#!perl -i.bak

.plとの関連付けを作成したWindowsでActivestateperlを使用すると、コマンドラインから直接perlスクリプトを実行できます。

myScript.pl

デフォルトの関連付けを引き続き使用する場合、ファイルのインプレース編集を行うにはどうすればよいですか?

4

2 に答える 2

5

トリックの質問のように聞こえますが、私はあなたを正しく理解しているのだろうかと思います。

perl -pi.bak myScript.pl myfiletochange

perlを呼び出し、スイッチとスクリプト名を指定するだけで、すぐに使用できます。

さて、これらの余分な引数を提供したくないかもしれません。その場合は、変数$^Iを設定するだけで、インプレース編集がアクティブになります。例えば:

$^I = ".bak"; # will set backup extension
于 2012-03-28T13:55:13.170 に答える
0

スクリプトを使用するので、次のようなことを行うことができます。

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';

于 2013-01-14T16:44:01.350 に答える