[Next] [Up] [Previous] [Contents] [Index]
Next: Feldfunktionen Up: Perl Previous: Hashes

Lesen von STDIN

 
print "Wie heisst Du? ";
$name = <STDIN>;
print "Wie heisst Dein Editor? ";
$edname = <>;
    Der Diamond-Operator <> liefert die Eingabe von STDIN zeilenweise zurück. Er kann natürlich auch auf andere Dateihandle angewendet werden. Wird das STDIN weggelassen, so wirkt <> immer auf STDIN.
Zu beachten ist hier, daß auch das NewLine-Zeichen (n) mit übergeben wird. dies kann aber mit chop entfernt werden.
print "Wie alt bist Du? ";
$age = <STDIN>;
chop($age) # entfernt das letzte Zeichen von $age
#oder kuerzer:
chop($age = <>);

Eine anderen Möglichkeit von Dateihandlen zu lesen ist die Funktion getc, die nicht zeilenweise, sondern zeichenweise einliest.

print "Antworte mit j oder n ";
$antwort = getc STDIN; # oder
$antwort = getc(STDIN);# oder
$antwort = getc;       # nur fuer STDIN!
Wie man hier schon erahnt gibt es in PERL immer mehrere Wege etwas zu tun. So lautet auch das Motto von PERL: There is more than one way to do it[+].

Perl unterscheidt, ob eine Variable in einem skalaren oder einem Listen Kontext ausgewertet werden soll. Wie wir schon gesehen haben unterscheiden sich die beiden folgenden Anweisungen völlig.

@copy = @source;
$size = @source;
Im ersten Fall wird @source in einem Listen-Kontext evaluiert und liefert darum auch eine Liste (nämlich ihren Inhalt) zurück. Im zweiten Fall merkt PERL, daß nicht nach einer Liste gefragt ist, weil $size ja gar keine Liste aufnehmen kann, sondern nur ein Skalar und liefert darum auch nur ein Skalar zuück (die Anzahl der Elemente in @source).

So verhäelt sich auch <> im folgenden Beispiel:

print "Erzaehl mir alles ueber Dich.\n";
@all = <STDIN>; # Abbruch mit ^d (Ctrl-d)
print "@all\n";
Hier liefert <> nicht eine einzelne Zeile zurück, sondern den gesamten über STDIN eingegebenen Text und zwar so, daß die Elemente aus @all jeweils eine Zeile beinhalten.


[Next] [Up] [Previous] [Contents] [Index]
Next: Feldfunktionen Up: Perl Previous: Hashes


Tue Dec 7 13:01:45 MET 1999