2011-01-19 4 views
0

これは非常に基本的な質問ですが、私はグーグルで答えを見つけることはできません。私は、PHPのプログラムで多くのファイルに文字列を検索し、置き換えるためにperlへの単純な呼び出しやってる:Perlで置換えの数を返す方法は?

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

を、私は代替品の数を返すようにコマンドをしたいと思います。 誰でもそのことを知っていますか? ありがとうございます。それはそれらを一緒に追加するだけの簡単な作業ですので

+2

マインド・ブーグリング...あなたはPHPからperlからfindを呼び出します。 s ///は置換の回数を返します。私はまた、この質問を一度持っていました:http://stackoverflow.com/questions/3103319 – musiKk

+0

[Perlでいくつの置換が行われましたか?/// g?](http://stackoverflow.com/questions/3103319)/how-many-substitution-taken-in-a-perl-sg) – philant

答えて

2

s///オペレータは、行われた置換の数を返します。

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

はこれを試してみてください。

の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 ");

しかし、前にも述べたように、PerlをPHPから呼び出すのは奇妙です。

+1

'exit'は入力を0から255の間の値に変換します。小さくて – mob

+0

ここに良い点があります。一般的なルールは次のようになります:この場合はexitを使わないでください... – dams

関連する問題