Jetzt ist es schon fast zum weinen, here-documents
xNeTworKx
- perl
Hallo,
Also ich weis nicht, was da verhext ist, aber manchmal funktionieren here Documents, manchmal nicht. Ich hab zwar schon mal gefragt, da bekam ich den Hinweis, daß ich print <<"EOF"; unter " setzen soll, was ich auch getan hab. Jetzt hat es eine Weile funktioniert, auf einmal kommt von einem File zum nächsten die Meldung : Can't find string terminator anywhere before EOF.
Ich weis einfach nicht, was ich noch beachten soll, einerseits weis ich, daß print <<"EOF"; und EOF jeweils ganz am Anfang der Zeile stehen muss, aber gibt es vielleicht noch eine Kleinigkeit die ich nicht beachtet hab. Hier ein Beispiel wo es nicht funktioniert.
#!C:/Perl/bin/Perl -w
print "Content-type:text/html\n\n";
print <<"EOF";
<html>
<head>
<style type="text/css">
body{background-image:url(../galaxy.jpg);
background-repeat:no-repeat;
background-attachment:fixed;
background-color:#000000;
font-family:Verdana, sans-serif;
font-size:14px;
font-weight:bold;
Color:#ffff00}
a:link {color:#ffaa00; text-decoration:none }
a:visited {color:#ffaa00; text-decoration:none }
a:hover {color:#ffff00; text-decoration:underline }
a:active {color:#ffff00; text-decoration:underline }
a:focus {color:#ffff00; text-decoration:underline }
table {width:800px}
td {text-align:center}
</style>
<title>Links</title>
</head>
<body>
<table>
<colgroup>
<col width="50%">
<col width="50%">
</colgroup>
<tr><td><a href="test">test</a></td><td><a href="test">test</a></td></tr>
</body>
</html>
EOF
Hallo,
Also ich weis nicht, was da verhext ist, aber manchmal funktionieren here Documents, manchmal nicht. Ich hab zwar schon mal gefragt, da bekam ich den Hinweis, daß ich print <<"EOF"; unter " setzen soll, was ich auch getan hab.
Also ich mache das nie, und es funktioniert immer.
Allerdings, und das solltest Du jetzt prüfen, darf die Datei inicht mit einem EOT aufhören, also zumindest nicht ohne einem Zeilenumbruch am Ende. Ich weiß ja nicht, ob es bei mir zu wenig perlish zugehet, aber Here-Documents sehen bei mir so aus:
print <<EOT
bla
blub
ploing
EOT
;
(Wahrscheinlich, weil für mich der Text zur Anweisung gehört, und Anweisungen mit einem Strichpunkt abgeschlossen werden. Andersrum finde ich es unlogisch.)
Grüße
Klaus
Hi,
darf die Datei inicht mit einem EOT aufhören, also zumindest nicht ohne einem Zeilenumbruch am Ende.
richtig. Das "EOT" muss der _gesamte_ Inhalt einer _vollständigen_ Zeile sein - und jeder, der mal unter Unix wc -l
auf eine Datei ohne Zeilenumbruch ausgeführt hat weiß, dass ein solcher zu einer Zeile dazugehört :-)
print <<EOT
Das würde ich auf Semikolon abschließen,
EOT
;
dies jedoch nicht :-)
(Wahrscheinlich, weil für mich der Text zur Anweisung gehört,
Genau das tut er eigentlich nicht. Es ist ein "Dokument", welches sich "hier" befindet, darum nennt es sich "here-document" ;-)
und Anweisungen mit einem Strichpunkt abgeschlossen werden. Andersrum finde ich es unlogisch.)
Nun, Du beendest hier die Anweisung "", was nicht wesentlich anders ist, als zwei Semikola aufeinanderfolgen zu lassen... :-)
Cheatah
Hallo,
danke, ich musste nur einen Zeilenumbruch machen, und es funktionierte.
Ich glaub jetzt is das Problem ein für alle Mal gelöst =)