置換もしながらキャプチャもしたいという欲張りさんなのかな。
e使って適当に保存するコード書けばいいんじゃね?

s/(〜)/push @cap, $1; 〜/ge