Hallo Siechfred!
Vielen Dank für die ausführlichen Erläuterungen und ich denke ja,
Dann will ich mal versuchen, etwas Licht ins Dunkel zu bringen.
das ist Dir gelungen.
Ich wollte gestern schon antworten, leider hat sich mein Schnupfen verschlimmert und ich war nicht in der Lage, klar zu denken und meine Fragen zusammen zu sammeln. Hoffentlich gelingt es mir heute.
Den Gültigkeitsbereich lexikalischer Variable meine ich bereits so gut assimiliert zu haben. Auch der Unterschied zwischen local und my dürfte soweit klar sein.
Bei Deinem Beispiel mit dem Einlesen der Datei in $input hätte ich aber erwartet, da $/ im Block ja undef ist (habe ich mit einer Abfrage überprüft), die ganze Datei in einer Zeile wiederzufinden. Dem ist aber nicht so. Allerdings habe ich sehr wohl den Unterschied gesehen: Kommentiere ich die local-Zeile aus, wird nur die erste Zeile ausgegeben.
Das letzte Beispiel interpretiere ich so, dass es also nicht möglich ist, eine in einem Modul wie auch immer definierte Variable, sei es als Rückgabewert einer Funktion oder einfach so definiert, vor Überschreibung zu schützen (das war meine Frage als skoorB leM im spotlight-Forum, als hier noch zu war).
Ich hatte im Kurztutorial von Eike Grothe, eine Möglichkeit gesehen, sich die Tabelle eines Packages ausgeben zu lassen. Also nehme ich mein Beispiel aus dem spotlight-Forum wieder:
use strict;
use warnings;
my $foo = 'foo';
print $foo; # foo
print $main::foo; # Keine Ausgabe?
und stelle hiermit fest:
foreach my $v (keys %main::) { print "main> $v\n" }
dass »foo« sehr wohl im Package main zu finden ist: In der längeren Liste:
.
.
main> UNIVERSAL::
main> foo
main> $
.
.
Warum keine Ausgabe bei $main::foo? Ist - wie von Doron angeregt - $foo mit our deklariert, ja da wird $main::foo ausgegeben...
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?