Um in baseportal innerhalb eines eigenen Programms (
<perl>...
</perl>) etwas auszugeben, benötigen sie den Befehl
Das
ist der Pendant zum Perl-Befehl
und wird prinzipiell genauso eingesetzt.
Beachten Sie, dass Sie innerhalb dieses Befehls normalerweise
keine weiteren Perl-Befehle einsezten können.
Einzig und allein
Variablen werden mit ihren Werten ausgegeben (s.unten)
$x=5;
out $x;
Dies gibt den Wert der
Variablen aus, also die Zahl
. 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:
Der Unterschied zwischen einfachen und doppelten Anführungsstrichen ist, dass
Variablen und andere besondere Zeichenfolgen (wie z.B. das
für den Zeilenumbruch) 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\n\nTest';
würde genau dies ausgeben:
x hat den Wert $x\n\nTest
während
$x=5;
out "x hat den Wert $x\n\nTest";
folgendes ausgibt:
x hat den Wert 5
Test
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 Variablenersetznug 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
mit einfachen Anführungsstrichen umschliessen (
), was man aber selten braucht. Statt
können Sie übrigens auch einen beliebigen anderen Text verwenden, z.B.
oder
.
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
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<br>";
$Summe+=$Betrag;
}
out "Summe: $Summe<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
verwendet:
$out.= <<EOF;
...
EOF
Fügt der
Variablen den gesamten Text zwischen den beiden
s hinzu.