use Mosche;
Siehe dazu zB das Kapitel 4 in "Einführung in Perl" (O'Reilly).
Seite 62.
Welche Ausgabe hast Du denn? Sicher Nicht Auflage 3 von 2002, oder? *g*
2. Auflage anno 1998.
Da S.62, stehen bei mir Übungsaufgaben u. auf S. 61 gehts um <STDIN> im Listenkontext. Wie soll denn das Kapitel heissen? Bei mir Kap.4 == Subroutinen, bei Dir?
Kap. 4 ist bei mir Kontrollstrukturen, und davon gleich die zweite Seite, da steht das ganze gut erklärt.
Mach dir nicht so einen Kopf darum, warum das denn jetzt wirklich so ist, das gehört einfach zu den Eigenheiten von Perl. Ich erläutere mal den Unterschied zu anderen Programmiersprachen:
andere Programmiersprachen kennen Variablentypen, zB Zahl (Ganzahl (int) Kommazahl (float,...), Text (String), Wahrheitswert (boolean, hat nur Werte true oder false)) und andere, die jetzt erstmal nebensächlich sind.
Perl kennt nur einen Variablentyp, den Skalar.
Wenn du in der anderen Programmiersprache einen Text mit einer Zahl "verknüpfen" willst (zB bei der Ausgabe) musst du eine Variable umwandeln. Bei Delphi gibt es häufig Ausdrücke wie:
label.caption := IntToStr(zahlvariable);
die Idee ist klar: caption erwartet einen Text, deswegen muss die Zahl durch die Funktion IntToStr in einen Text umgewandelt werden.
Perl macht das alles automatisch. Folgender Code ist zulässig, vielleicht aber nicht besonders sinnvoll:
my $var = 'blah';
$var++;
print $var;
(jedenfalls, wenn du ohne -w oder use warnings arbeitest)
Perl versucht hier auf Deubel komm raus den Text in eine Zahl umzuwandeln, und zwar ohne es dir explizit zu sagen. Das beispiel oben gibtg 'bla' aus (warum weiss ich nicht, ist auch einfach sinnbefreit).
Was Perl konkret macht, musst du am Kontext erkennen. Weil du hier einen Operator (++) anwendest, der auf einer Zahl basiert, wird der Text in eine Zahl umgewandelt (kannst du im Übrigen auch durch die funktion int() manuell machen) und um eins erhöht.
Und, wie gesagt, im logischen Kontext wird aus der Variablen ein boolean gemacht (mit Hilfe der genannten Regeln). Boolean bei Perl heisst 1 oder 0 (wahr oder falsch), damit ist alles erklärt. Alles was du tatsächlich wissen musst, ist warum Perl das macht (weil es dir die Arbeit mit Variablentypen ersparen will) und wann es das macht (wenn der Kontext es erfordert). Das ist alles.
use Tschoe qw(Matti);