そこまで言うなら、↓。相当適当。
もっと効果的な場面があるだろう。適当に考えてください。

use Benchmark qw(:all);

srand 1; @variation = a..z; @lines = map {join '', (map {$variation[rand() * @variation]} (1..200))} (1..1000);

timethese 5000,
{'complexRegex' => sub { m/^(?=abcdef)(?=ghijklm)/o for(@lines); },
'simpleRegex' => sub { m/^abcdef/o && m/^ghijklm/o for(@lines); },
'simpleRegex2' => sub { m/^(?=abcdef)/o && m/^(?=ghijklm)/o for(@lines); },
'singleRegex' => sub { m/^(?=abcdef)/o for(@lines); },
'singleRegex2' => sub { m/^(?=ghijklm)/o for(@lines); }};

Benchmark: timing 5000 iterations of complexRegex, simpleRegex, simpleRegex2, singleRegex, singleRegex2...
complexRegex: 2 wallclock secs ( 1.81 usr + 0.00 sys = 1.81 CPU) @ 2757.86/s (n=5000)
simpleRegex: 1 wallclock secs ( 1.28 usr + 0.00 sys = 1.28 CPU) @ 3903.20/s (n=5000)
simpleRegex2: 2 wallclock secs ( 1.91 usr + 0.00 sys = 1.91 CPU) @ 2621.92/s (n=5000)
singleRegex: 2 wallclock secs ( 1.83 usr + 0.00 sys = 1.83 CPU) @ 2735.23/s (n=5000)
singleRegex2: 2 wallclock secs ( 1.83 usr + 0.00 sys = 1.83 CPU) @ 2735.23/s (n=5000)

>>117
まあ、色々言ってくれるのはいいんだけど、あなたの方で
理由もってきて否定するなり肯定するなりしてくれてもいいじゃない。