Hallo!
Danke Jörk (und andere)!
gern geschehen ...
Ich werde also in Zukunft mehr auf maskieren aufpassen,
Meisten ist es sogar das Beste, sich hier die Arbeit abnehmen zu lassen - per
quotemeta()
und (schon ausprobiert) die print <<"ETWAS"; mehr benutzen. Ist eine feine Sache. Und jemand sagte das es nicht in Perl-Dokumentation steht: Stimmt nicht - habe es in der Kamel-Bibel gefunden (im Index nur nach "<<" suchen).
Richtig! Wie ich schon schrieb steht das in der alten und in der neuen unter 'here-documents'
Um noch mal auf das ursprüngliche Problem zu kommen: Eine Kombination von here-documents und automatischen 'quotes' wäre hier wohl das pfiffigste. Zumal man bei Änderungen des HTML-Textes sich nicht jedesmal erneut mit den Problemen rumschlagen muss.
---------------------------------------------------------------------------------------
print &JSDocument( <<'EndOfDocument' );
<html><head>
<script language="JavaScript">
-- hier kommt javascript-code (natürlich angepasst) --
</script>
</head>
[...]
EndOfDocument
sub JSDocument {
my ($doc) = @_;
#-----------------------------------------------
# Jetzt jede einzelne Zeile mit einem JS-writeln
# erweitern
$doc =~ s/^(.*)$/'parent.frames[0].document.writeln ("' . quotemeta($1) . ')";'/em;
#-----------------------------------------------------------
# Als Rückgabewert können wir nun noch ein paar Anweisungen
# um die Ausgabe herumstricken ...
return <<"EndOfJS";
parent.frames[0].document.open();
$doc
[...]
EndOfJS
}
---------------------------------------------------------------------------------------
Auch bei here-document ist zu unterscheiden - zwischen einfachen und doppelten Anführungszeichen.
Viel Spaß noch,
Jörk