Thread Globale Variable in BEGIN Block setzen: Interaktion von my, our, undef und BEGIN (25 answers)
Opened by murphy at 2005-09-15 04:25

murphy
 2005-09-15 14:48
#58029 #58029
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ah, logisch, der BEGIN Block wird natürlich ausgeführt, bevor die andere Zuweisung zu der Variablen erfolgt.

Allerdings bleiben da folgende Fragen bei mir offen:

- wenn der BEGIN Block zuerst ausgeführt wird, warum gibt es dann trotz use strict keine Probleme mit der Zuweisung an eine nicht näher qualifizierte Globale Variable?

(edit:
Der folgende Code
Code: (dl )
1
2
3
use strict;
use warnings;
BEGIN { $stuff = 0; }

funktioniert ja auch nicht ohne Fehler, schreibt man aber ein my $stuff oder our $stuff vor den BEGIN Block, dann beschwert sich Perl nicht mehr...)

- wenn das my $stuff = undef nach dem BEGIN Block ausgeführt wird, warum erzeugt es dann nicht, wie my $stuff = 0 das offenbar tut, eine neue lexikalische Variable, die die alte globale verdeckt?

Bei meinem Perl gibt das Beispiel mit "my $stuff = undef;" übrigens keine Warnung!

Code: (dl )
1
2
3
4
$ perl --version

This is perl, v5.8.6 built for darwin-thread-multi-2level
[...]
\n\n

<!--EDIT|murphy|1126781614-->
When C++ is your hammer, every problem looks like your thumb.

View full thread Globale Variable in BEGIN Block setzen: Interaktion von my, our, undef und BEGIN