プロジェクトのすべてのソース ファイルの一部のテキストを置換する Perl スクリプトをコーディングしようとしています。私は次のようなものが必要です:
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" *.{cs,aspx,ascx}
しかし、それはディレクトリのすべてのファイルを再帰的に解析します。
スクリプトを開始しました:
use File::Find::Rule;
use strict;
my @files = (File::Find::Rule->file()->name('*.cs','*.aspx','*.ascx')->in('.'));
foreach my $f (@files){
if ($f =~ s/thisgoesout/thisgoesin/gi) {
# In-place file editing, or something like that
}
}
しかし今、私は立ち往生しています。Perl を使用してすべてのファイルをその場で編集する簡単な方法はありますか?
変更されたすべてのファイルのコピーを保持する必要はないことに注意してください。私はすべてを転覆させました =)
更新: Cygwinでこれを試しました、
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" {*,*/*,*/*/*}.{cs,aspx,ascx
しかし、引数リストが許容される最大サイズまで爆発したようです。実際、Cygwinで非常に奇妙なエラーが発生しています...