out (Ausgabe) |
Um einen beliebigen Text auszugeben müssen Sie diesen in Anführungsstrichen setzen:
out "Hallo, Welt!";
Sie können in diesem Fall auch einfache Anführungsstriche benutzen:
out 'Hallo, Welt!';
Die Ausgabe ist dieselbe: Hallo, Welt!. Der Unterschied zwischen einfachen und doppelten Anführungsstrichen ist, dass Variablen in doppelten Anführungsstrichen durch den eigentlichen Wert ersetzt werden. In einfachen Anführungsstrichen geschieht dies nicht:
$x=5; out 'x hat den Wert $x';
würde genau dies ausgeben:
x hat den Wert $x
während
$x=5; out "x hat den Wert $x";
folgendes ausgibt:
x hat den Wert 5
Probleme gibt es in beiden Fällen, wenn man die jeweiligen Anführungsstriche selbst innerhalb des Textes schreiben will. Hierfür gibt es jedoch eine Lösung: Sie müssen den Anführungsstrich, der ja sonst das Ende des Textes markiert besonders kennzeichnen. Dies erfolgt mit dem \-Zeichen, Backslash ("umgedrehter Schrägstrich") oder auch Escape-Zeichen (da Sie damit vor der eigentlichen Bedeutung "flüchten") genannt:
out 'Er sagte: "Jetzt schlägt\'s 13 !"';
oder mit doppelten Anführungszeichen:
out "Er sagte:\"Jetzt schlägt's 13 !\"";
Ebenso können Sie innerhalb der doppelten Anführungszeichen die Variablenersetzung verhindern:
out "Wert von \$x: $x";
Benötigt man viele Zeilen Ausgabe hintereinander so ist es uneffizient, dafür viele "out"-Befehle zu verwenden:
out "Zeile1...."; out "Zeile2...."; out "Zeile3...."; ...
Viel besser ist folgende Schreibweise:
out <<EOF; Zeile1... Zeile2... Zeile3... ... EOF
Anführungsstriche müssen darin nicht "escaped" werden; Variablen werden aber ersetzt. Will man keine Variablenersetzung, so muss man das EOF mit einfachen Anführungsstrichen umschliessen (out <<'EOF'; ... EOF), was man aber selten braucht. Beachten Sie, dass das EOF zum Beenden der Ausgabe alleine und am Anfang der Zeile stehen muss. Statt EOF können Sie übrigens auch einen beliebigen anderen Text verwenden, z.B. AUSGABE oder BIS_ZUM_ENDE. EOF wird aber üblicherweise genommen.
Oft hat man innerhalb langer Textausgaben einzelne Texte die von einer Bedingung abhängen. Es ist dann sehr unschön, das EOF jedesmal zu unterbrechen. Besser ist es, eine Variable mit den nötigen Texten je nach Bedingung zu belegen und diese dann an der Ausgabestelle einzubinden:
my $mehrzahl=""; $mehrzahl="en" if $anzahl<!=1; out <<EOF; ... Es sind $anzahl Person$mehrzahl anwesend. ... EOF
Ein oft nützlicher Trick ist es auch, Ausgaben nicht sofort zu machen, sondern erst in einer Variablen zu sammeln:
get "Datum>jetzt-14", "konten"; while(get_next) { $out.="Eingang am $Datum: $Betrag<span class=html><br></span>"; $Summe+=$Betrag; } out "<b>Summe: $Summe</b><p>$out</p>";
Hier wird die eigentliche Ausgabe erst in der Variablen $out gesammelt und erst später nach der Summe ausgegeben. Dadurch erspart man sich ein unnötiges zweites Abfragen der Datenbank, da die Summe aller Einträge ja vor den Einträgen selbst ausgegeben werden soll.
Dies funktioniert übrigens auch, wenn man dabei für längere Texte ein <<EOF; ... EOF verwendet:
$out.=<<EOF; ... EOF
Fügt der Variablen out den gesamten Text zwischen den beiden EOFs hinzu.