大きなスカラーに対して正規表現を実行しています。この試合では何もキャプチャされませんが、この試合の後、私のプロセスは 30M 増加します。
# A
if (${$c} =~ m/\G<<\s*/cgs)
{
#B
...
}
$c
はかなり大きなスカラー (約 21M) への参照ですpos(${$c})
が、正しい場所にあり、式が最初の文字で一致し、pos(${$c})
一致後に正しい場所に更新されることを確認しました。しかし、前述したように、このマッチでは何もキャプチャしていませんが、プロセスは #A と #B の間で約 30M 増加しています。私の記憶はどこへ行くの?
編集:はい、の使用は$&
責任がありました。私たちは Perl 5.8.8 を使用しており、スクリプトは組み込みのText::Balancedを使用するGetopt::Declareを使用していました。このモジュールの 1.95 バージョンは を使用していました。Perl 5.10 に同梱されているバージョン 2.0.0 では、参照が削除され、問題が軽減されています。$&
$&