お前がやれよ!まあ、暇だからやったけどさ。
===そーす===
my $str1 = 'a' x 6 . 'hoge' ;
$str1 = $str1 x 100 ;
sub test1(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $& while $tmp =~ s/hoge// ; }
sub test2(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $1 while $tmp =~ s/(hoge)// ; }

#timethese 10000, { test2 => 'test2' } ;
timethese 10000, { test1 => 'test1', test2 => 'test2' } ;
===実行結果===
1. ソース内に $& 蟻
Benchmark: timing 10000 iterations of test, test2...
test: 13 wallclock secs (13.22 usr + 0.10 sys = 13.32 CPU) @ 750.75/s (n=10000)
test2: 14 wallclock secs (13.34 usr + 0.10 sys = 13.44 CPU) @ 744.05/s (n=10000)

2. ソース内に $& なし(test1 をコメントアウト
Benchmark: timing 10000 iterations of test2...
test2: 14 wallclock secs (13.32 usr + 0.10 sys = 13.42 CPU) @ 745.16/s (n=10000)