Я пытаюсь закодировать Perl script, чтобы заменить текст во всех исходных файлах моего проекта. Мне нужно что-то вроде:
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" *.{cs,aspx,ascx}
Но это анализирует все файлы каталога рекурсивно.
Я только что начал script:
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?
Обратите внимание, что мне не нужно хранить копию каждого измененного файла; У меня есть все subversioned =)
Обновление: я пробовал это на Cygwin,
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" {*,*/*,*/*/*}.{cs,aspx,ascx
Но похоже, что список моих аргументов взорвался до максимально допустимого размера. На самом деле, я получаю очень странные ошибки в Cygwin...