Calocybe: Funktionsparameter

Beitrag lesen

Hi Bernhard!

// sub parse4Textarea {
//    $laenge = @_;    # so gehts
//    my($laenge)= @_; # so gehts nicht

Jetzt wird mir's klar. Die Anzahl der Elemente wird von einem Array genau dann zurueckgegeben, wenn es in einem skalaren Kontext ausgewertet wird. Das ist in der oberen Zeile der Fall; dort willst Du etwas an ein Skalar zuweisen, das heisst "ich will ein Skalar haben!", und das ist eben ein skalarer Kontext.

In der unteren Zeile fasst Du $laenge aber in Klammern ein, und damit hast Du dort eine Liste stehen, und deshalb wird @_ im Listenkontext ausgewertet. D.h. was rechts stehet, wird an die Liste links zugewiesen. Da links nur ein "Zielelement" (ich nenne es mal so, $laenge ist gemeint) steht, wird nur das erste Listenelement kopiert (was eine Zeichenkette ist). Spaeter in der Schleife fuehrst Du dann einen numerischen Vergleich durch, ... der Rest ist Dir sicher klar. Also, einfach die Klammern weglassen, die braucht man nur, wenn man mehrere Vars auf einmal my-en will.

Kann man sich im DOS-Fenster irgendwie den Output im Ganzen ansehen, oder muss man da jedes mal so schnell es geht den >Pause< Knopf drücken, um zu sehen was der Interpreter mir auswirft, wenn es mal länger als eine Seite ist ?

Wenn Du ein vernuenftiges DOS-Fenster hast... Meines ist 1000 Zeilen hoch, das kann man unter WinNT einstellen, bei Win95 aber nicht. Vielleicht hilft Dir auch
  perl zeuchs.pl | more
ist aber nicht so schoen.

und use strict.
was macht strict?

Dich zwingen, 'my' hinzuschreiben. ;-) Damit kannst Du keine undeklarierten Variablen verwenden, was Dich Schreibfehler schnell finden laesst.

So long