Thread <$fh>
(7 answers)
Opened by Froschpopo at 2006-10-04 05:24
Der normale Name "HANDLE" ist ein Typeglob, und der gilt Global für das Package.
Wenn du allerdings ein Skalar benutzt, dann gilt dieser, sofern du ihn mit my deklarierst, nur für den aktuellen Block/Datei. Wenn du z.B. eine Datei öffnest und das Dateihandle dann "FH" nennst, dann ein oder zwei Zeilen ausliest und dann sagen wir mal eine eigene Subroutine aufrufst die auch wieder "FH" als Dateihandle benutzt. Dann würde das open() in der Subroutine dein altes FH schließen, und diese wieder neu öffnen. Deswegen würden damit auch keine Rekursiven Funktionen gehen, da du mit jedem aufruf dein Dateihandle wieder schließt. Wenn du aber stattdessen eine lexikalische Variable benutzt, dann gilt jede Variable nur für Ihren Block. Letztendlich ist es weniger Fehleranfällig, und es erhöht auch deine Möglichkeiten. (Obwohl man das ganze auch mit "local *FH" lösen könnte, ich meine da gab es aber trotzdem noch ein Unterschied. *nachdenk*) Quote Die Subroutine wird nicht so aufgerufen, sie wird so definiert. Das ist ein Prototyp. Daher diese Subroutine benötigt mindestens 2 Werte. perlsub\n\n <!--EDIT|sid burn|1159948569--> Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|