Как вернуть количество замен в Perl? - PullRequest
0 голосов
/ 19 января 2011

Это очень простой вопрос, но я не нахожу ответ, прибегая к гуглу. Я делаю в программе PHP простой вызов Perl, чтобы найти и заменить строки во многих файлах:

exec("perl -pi -e 's|foo|bar|g' `find . -name *.foo`");

и я хотел бы, чтобы команда возвращала количество замен. Кто-нибудь знает, как это сделать? Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Оператор s/// возвращает количество выполненных замен, поэтому их просто сложить вместе:

perl -pi -e '$C+=s|foo|bar|g; END{print"$C\n"}' `find . -name *.foo`
1 голос
/ 19 января 2011

попробуйте это:

exec ("perl -pi -e 'END {print ($ c)} $ c + = s | foo | bar | g' find . -name *.foo");

Будет напечатано количество замен. Затем вы можете получить его от вашего исполнителя. Если вы хотите, чтобы число было в возвращаемом значении процесса, вы можете попробовать:

exec ("perl -pi -e 'END {exit ($ c)} $ c + = s | foo | bar | g' find . -name *.foo");

Но, как уже было сказано, странно вызывать Perl из PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...