Micha: Für absolut reguläre Ausdrucks Experten!

Beitrag lesen

Hi!

Ich habe folgenden geistreichen Text:
&onMond&Sterne sind oft zu sehen&off aber auch &ondie Sonne&off!

dieser soll umgewandelt werden in:
<Mond&Sterne sind oft zu sehen> aber auch <die Sonne>!

Also das &on zu < und das darauffolgende &off zu >. Das funktioniert auch wunderbar mit dem Ausdruck:
$text=~s/&on(.*?)&off/<$1>/ig; # ? für kleinst mögliche Lösung!

Und jetzt zu meiner Frage: Wieso funktioniert das mit folgendem Ausdruck nicht?
$text=~s/&on(.*(?!&off))&off/<$1>/ig;   # (?!...) ist ohne ...

Habe ich da irgendwie einen Denkfehler? Ich wäre echt sehr dankbar wenn mir jemand erklären könnte was ich falsch mache oder eine andere Lösung für mich hätte (ich verwende Perl 5).
Tschau
  Micha

Script zum testen:
#!/usr/bin/perl
$text='&onMond&Sterne sind oft zu sehen&off aber auch &ondie Sonne&off!';

$text=~s/&on(.*(?!&off))&off/<$1>/ig;
#$text=~s/&on(.*?)&off/<$1>/ig;   #damit funktioniert es

print "$1:$1\n";
print "$2:$2\n";
print "$&:$&\n\n";
print $text;