Ein- und Ausgabe auf die Standardein- und -ausgabePerl

Als Programmierer ist man daran interessiert Programme zu schreiben, die mit der Außenwelt kommunizieren - sonst wäre es ja irgenwie nutzlos!? Ein Teil der Außenwelt ist die Standardein- und -ausgabe - also im Normalfall das DOS-Fenster.

SeitenanfangSeitenende<STDIN>

Mit Hilfe von <STDIN> liest man zeilenweise von der Standardeingabe. Jedesmal wenn in Ihrem Programm <STDIN> zu finden ist (in einem syntaktisch richtigen Kontext) wartet das Programm auf eine Eingabe aus der Standardeingabe. Wird die Eingabe mit einem Newline-Zeichen am Ende (in Perl "\n"; im DOS-Fenster: RETURN) abgeschlossen, hat das Programm bekommen was es wollte und macht weiter. Will man mit dem eingelesenen Wert weiterarbeiten, so sollte dieser einer Variablen zugeordnet werden. Folgendes ist möglich:

$eingabe=<STDIN>; # Lese aus der STDIN

Das letzte Zeichen in $eingabe enthält jetzt ein Newlinezeichen - es wird mit eingelesen! Mit dem chop()-Operator kann dieses wieder gelöscht werden:

$eingabe=<STDIN>; # Lese aus der STDIN
chop($eingabe);   # lösche letztes Zeichen

# kürzer:
chop($eingabe=<STDIN>);
Bemerkung: <STDIN> wird hier wie eine skalare Variable gebraucht.

SeitenanfangSeitenendeprint

Gut - wir können einlesen - jetzt kommt das ausgeben: der Operator print(). print() kann auf eine skalare Variable (oder direkt auf eine Zahl oder einen String) angewendet werden. Falls dies so ist, wird der Wert der Letzeren in die Standardausgabe ausgegeben.

$hi="hello world!\n"
print($hi); # ergibt: hello world! und ein newline
print $hi;  #             - " -
print "hello world!\n"; # - " -
Bemerkung: Der print()-Operator kann auch ohne Klammern benutzt werden. (Es gibt nur wenige Ausnahmen, wo das nicht der Fall ist.) Es ist eine Frage des Programmierstils.

SeitenanfangSeitenendeBeispielprogramm

Es soll eine Zahl eingelesen und deren Quadrat ausgerechnet werden:

# quadrat1.pl

print "Bitte eine Zahl eingeben: ";
chop($zahl=<STDIN>);# Einlesen der Zahl
  # löscht auch das letzte Zeichen in
  # $zahl also das "neue Zeile"-Zeichen

$quadrat=$zahl*$zahl;
print "Das Quadrat von ".$zahl." ist ".$quadrat.".\n";
  # oder: print ... " ist ".$zahl**2.".\n";

ergibt:

Y:\Perl>perl quadrat1.pl
Bitte eine Zahl eingeben: 17
Das Quadrat von 17 ist 289.

Y:\>
Bemerkung: Wie beim den Strings und den Zahlen gilt: Es liegt am Kontext (also an dem was um die Variable herumsteht), ob Zahlen-Variablen als Zahlen-Variablen oder als String-Variablen behandelt werden.

Seitenanfang FehlermeldungHilfe zur Fehlermeldung © 2001-2003 Email an den AutorPerl, Lehrstuhl Mathe II, Uni Bayreuth