baseportal
Suche: 
 Forum   Start 

out (Ausgabe)

 
Um in baseportal innerhalb eines eigenen Programms <perl>..</perl> etwas auszugeben, benötigen sie den Befehl out. out ist der Pendant zum Perl-Befehl print und wird prinzipiell genauso eingesetzt.

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.

Alte Version vom 29.9.2007, 11:53 - Stichworte: out, Ausgabe, Anführungsstriche, EOF, Backslash, \, Escape

c und wiederherstellen - + 
© baseportal GmbH. Alle Rechte vorbehalten.


powered in 0.03s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!