如何在Perl中返回替换数?

如何在Perl中返回替换数?,perl,replace,Perl,Replace,这是一个非常基本的问题,但我在谷歌上找不到答案。我正在一个php程序中对perl进行一个简单调用,以查找和替换许多文件中的字符串: exec("perl -pi -e 's|foo|bar|g' `find . -name *.foo`"); 我希望命令返回替换的数量。 有人知道怎么做吗? 谢谢。运算符返回所做替换的数量,因此只需将它们相加即可: perl -pi -e '$C+=s|foo|bar|g; END{print"$C\n"}' `find . -name *.foo` s//运

这是一个非常基本的问题,但我在谷歌上找不到答案。我正在一个php程序中对perl进行一个简单调用,以查找和替换许多文件中的字符串:

exec("perl -pi -e 's|foo|bar|g' `find . -name *.foo`");
我希望命令返回替换的数量。 有人知道怎么做吗?
谢谢。

运算符返回所做替换的数量,因此只需将它们相加即可:

perl -pi -e '$C+=s|foo|bar|g; END{print"$C\n"}' `find . -name *.foo`

s//
运算符返回已进行的替换的数量,因此只需将它们相加即可:

perl -pi -e '$C+=s|foo|bar|g; END{print"$C\n"}' `find . -name *.foo`
试试这个:

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

它将打印替换的数量。然后可以从exec检索它。 如果您希望数字包含在流程的返回值中,可以尝试:

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

但如前所述,从PHP调用Perl很奇怪。

试试以下方法:

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

它将打印替换的数量。然后可以从exec检索它。 如果您希望数字包含在流程的返回值中,可以尝试:

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


但正如前面所说,从PHP调用Perl是很奇怪的。

令人难以置信。。。您可以从PHP调用perl中的find。s///返回所做替换的数量。我也曾经有过这样一个问题:令人难以置信的可能复制品。。。您可以从PHP调用perl中的find。s///返回所做替换的数量。我也曾经有过这样一个问题:
exit
的可能重复会将输入强制为0到255之间的值(在大多数操作系统上),因此当您期望结果很小时,它最有帮助。
exit
会将输入强制为0到255之间的值(在大多数操作系统上),因此当您期望结果很小时,它最有帮助。