Sebastian S.: print-Anweisung bei Perl...ohne Anführungszeichen?

Hallo allerseits,

ich habe folgendes Perl-Script im Internet gefunden und würde gerne mehr über seine Funktionsweise erfahren.

print <<__W2__;
   <BODY BGCOLOR="#FFFFFF">
   <CENTER>
   <TABLE WIDTH=550 BORDER=1>
    <TR>
     <TD>
      <H1>Danke!</H1>
      Deine Angaben wurden in die WHU-Praktikumsdatenbank übernommen.
      <P>
      Folgende Angaben hast Du gemacht:
      <P>
__W2__

Dieser Abschnitt, der offensichtlich dazu gedacht ist, ein HTML-Dokument an den Browser zurückzugeben, enthält mehrere Zeilen, aber nur eine "print"-Anweisung. Der zurückzugebende Text ist nicht in Anführungszeichen eingefaßt...

Bis jetzt kannte ich nur etwas wie:

print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>Danke!</title>\n";
print "</head>\n";
print "<body>\n";
print "<h1>Danke</h1>\n";
print "Wir freuen uns, daß Sie unser Formular ausgefüllt \n";
print "haben. Hier zur Kontrolle Ihre Angaben:<p>\n";

Kann mir jemand die genaue Bedeutung und Funktionsweise von

<<__W2__;

und

__W2__

erklären. Um was für eine Anweisung/Befehl handelt es sich hier, und wie ist sie zu verwenden?

Für jegliche Hilfe wäre ich sehr dankbar...

Viele Grüße
Sebastian

  1. Hi !

    Kann mir jemand die genaue Bedeutung und Funktionsweise von

    <<__W2__;

    und

    __W2__

    __W2__ ist ein sog. Label, einfach eine Markierung bzw. Flag, dass eine gewisse Stelle kennzeichnet!

    wenn du also print <<'__W2__'; schreibst heisst das soviel wie schreibe alles von hier weg bis du das Label __W2__ findest in das Ausgabe-Dokument!

    Wichtig dabei ist: Wenn du ein Dokument neu anfängst musst du immer zuerst Content-type: text/html ausgeben, und dann zwei Zeilenschaltungen machen. Erst dann kannst du mit <html> anfangen!

    Und das Label darf nicht das Letzte Zeichen in deinem Script sein!
    Sonst gibts nen Fehler :-(

    Kannst auch mal im Archiv stöbern!
    Suchbegriff: "Here Dokument"

    Grüsse
    Bernhard

  2. Hallo Sebastian,

    Kann mir jemand die genaue Bedeutung und Funktionsweise von
    <<__W2__;
    und
    __W2__
    erklären. Um was für eine Anweisung/Befehl handelt es sich hier,

    und wie ist sie zu verwenden?

    print <<Name; (....) Name bewirkt, dass der Text zwischen den
    Markierungen genauso auch im Browser ausgegeben wird. Dadurch kann
    man sich das ständige schreiben von print ""; sparen. Letztendlich
    ist es aber egal auf welche Weise man den Text ausgibt.

    Ciao,
       Tobi

    <img src="http://www383.l7.xodox.com/87ba30.gif" alt="Tobi`s Welt" style="cursor:hand;" onmouseup="window.location.href='http://www383.l7.xodox.com'" onmouseover="window.status='http://www.tobi-beck.de';return true;" onmouseout="window.status='';return true">

  3. Hallo,

    Kann mir jemand die genaue Bedeutung und Funktionsweise von

    <<__W2__;

    und

    __W2__

    erklären. Um was für eine Anweisung/Befehl handelt es sich hier, und wie ist sie zu verwenden?

    Das ganze nennt sich 'here-document' und ist recht ausführlich ind 'perldoc perldata' beschrieben.

    Ganz kurz Syntax in Zusammenhang mit print:
    print <<STRING_DER_DAS_ENDE_MARKIERT
    Text mit $variablen, die
    interpoliert werden,
    und das ganze über viele Zeilen hinweg
    STRING_DER_DAS_ENDE_MARKIERT
    ;
    oder
    print <<STRING_DER_DAS_ENDE_MARKIERT;
    Text mit $variablen, die
    interpoliert werden,
    und das ganze über viele Zeilen hinweg
    STRING_DER_DAS_ENDE_MARKIERT

    Wichtig ist dabei, daß der 'STRING_DER_DAS_ENDE_MARKIERT' genau so und nur das in der letzten Zeile steht.

    print <<STRING_DER_DAS_ENDE_MARKIERT;
        STRING_DER_DAS_ENDE_MARKIERT

    bringt eine Fehlermeldung.

    Sinn des ganzen ist, daß viel einzelne print-Zeilen den Code bei langen Textausgaben ziemlich unübersichtlich machen können.

    Grüße
      Klaus