2010-07-11 12 views
10

Ich würde gerne wissen, was ENDOFTEXT bedeutet in diesem Perl-Skript:Was bedeutet ENDOFTEXT in diesem Perl-Code?

print <<ENDOFTEXT; 
HTTP/1.0 200 OK 
Content-Type: text/html 

<HTML> 
<HEAD><TITLE>Hello World!</TITLE></HEAD> 
<BODY> 
<H4>Hello World!</H4> 
<P>You have reached <a href="$url">$url</a></P> 
<P>Your IP Address is $ip</P> 
<H5>Have a nice day!</H5> 
</BODY> 
</HTML> 
ENDOFTEXT 
exit(0); 

Antwort

10

Es ist ein Operator, ein Heredoc oder Here-Dokument genannt. Komischerweise ist der Verweis in perldoc nicht so einfach zu finden wie er sein sollte. Es ist nützlich, wenn Sie einen großen Textabschnitt zitieren können, ohne sich mit dem Entweichen spezieller Variablen befassen zu müssen.

Sie können die Here document article auf Wikipedia auch lesen. Der gesuchte Eintrag ist <<EOF unter Quote-and-Quote-like-Operators von perldoc. Ich bin unter Berufung es hier für einfache Bedienung:

Eine zeilenorientierte Form des Zitierens ist basierend auf der Schale „hier-Dokument“ Syntax. Nach einem < < geben Sie eine Zeichenfolge an, um das angegebene Material zu beenden, und alle Zeilen, die der aktuellen Zeile bis zum abschließenden String folgen, sind der Wert des Elements. Die Abschlusszeichenfolge kann entweder ein Bezeichner (ein Wort) oder ein bestimmter Text sein. Eine nicht angebene Kennung funktioniert wie doppelte Anführungszeichen. Zwischen der < < und der Kennung darf kein Platz sein, es sei denn, die Kennung ist explizit angegeben. (Wenn Sie ein Leerzeichen setzen es wird als null Kennung behandelt werden, die gültig ist, und entspricht die erste leere Zeile.)

Die Abschluss Zeichenfolge von erscheinen muss selbst (nicht notierte und mit keinen Umgebung Whitespace) auf der Terminallinie.

Wenn die abschließende Zeichenkette zitiert wird, bestimmen die verwendeten Anführungszeichen die Behandlung des Textes.

9

Es ist ein Hier-Dokument oder heredoc. Das ENDOFTEXT ist nur eine willkürliche Sequenz, die das Ende davon markiert; es bedeutet nichts an sich. (Ich würde eher END verwenden, aber das ist nur persönlicher Geschmack.)

3

Der ENDOFTEXT String bezeichnet den Anfang und das Ende eines "Here-Dokuments". Es ist in der offiziellen Perl-Dokumentation beschrieben (Suche nach EOF): Quote-and-Quote-like-Operators. Es ist eine beliebige Zeichenfolge; Der Code könnte die Zeichenfolge FOO mit dem gleichen Effekt verwendet haben. Es erlaubt mehrzeiliges Quotieren, und in diesem Fall werden Variablen interpoliert.

7

Zusätzlich zu dem, was andere Leute schon gesagt, sollte ich beachten Sie, dass das Buch Perl Best Practices mit Bareword hier-docs zu vermeiden empfiehlt (zB: „< < EOF“) und stattdessen explizit alle hier-doc entweder als < < ‚EOF zitieren 'oder < < "EOF". Dies liegt daran, dass Leute oft nicht wissen, was für das Barebord-EOF der Fall ist.