Suchst Du aber case-insensitiv, dann fallen die Operationen an allen Positionen doppelt aus. Du suchst also ein H" *oder* ein "h", was intern eben zwei Vergleiche sind; dasselbe für jedes weitere Zeichen.
Und der oben beschriebene lookahead muß jetzt "H" und "h" als gleiche Zeichen behandeln, was die Chance erhöht, daß er nicht angewendet werden darf und dadurch Zeichen im zu durchsuchenden Text mehrfach verglichen werden müssen ...
Du realisierst die Unterscheidung also mit dem Schalter "/i".
Wenn die Perl-Suchroutine aber so arbeitet, wie Du beschreibst, dann ist das doch Wahnsinn, es so zu machen.
Wieso konvertierst Du nicht den Suchbegriff als erstes in Kleinbuchstaben und konvertierst dann die jeweils zu vergleichenden Zeilen ebenfalls in Kleinbuchstaben. Satt dem exponentialen Arbeitsaufwand, den Du beschreibst, ist es nur ein einfacher zusätzlicher Arbeitsschritt pro zu durchsuchender Zeile (und außerdem dürfte die Umsetzung in Kleinbuchstaben - oder auch Großbuchstaben - sowieso ein zügigerer Vorgang sein als die Prüfung regulärer Ausdrücke).
Gruß,
Oliver