Hallo Günter!
---- snip ----
while($_ =~ /<(?:.*?\s+)(?:alttitle)="(.*?)"(?:.*>>)/igo) { $stringa .= "$1 " if($1); }
---- snip ---
Ich hätte da folgendes Anzubieten:
while($_ =~ /<[^>]+?\s+)(?:alttitle)="(.*?)"[^>]*>/igo) { $stringa .= "$1 " if($1); }
Hauptsächlich sollte wohl die letzte Klammer bei Dir der Übeltäter sein. Der verwendete * ist ja bekanntlich "greedy" - also äußerst gefräßig! So schnappt er sich also erstmal den Gesamten Text und gibt ihn dann Zeichen für Zeichen wieder frei, bis eine Stelle gefunden ist, an der ein > folgt ...
Probier es doch einfach mal aus. Schnellschuß bei Dir wäre dann ein ? einzubauen (?:.*?>>)
Gruß,
Jörk