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 04:25
#58025 #58025
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Betrachten wir den folgenden Code
Code: (dl )
1
2
3
4
5
use strict;
use warnings;
our $stuff = 0;
BEGIN { $stuff = 1; }
print "$stuff\n";

Ausgabe: 0

Zweiter Versuch:
Code: (dl )
1
2
3
4
5
use strict;
use warnings;
my $stuff = 0;
BEGIN { $stuff = 1; }
print "$stuff\n";

Ausgabe: 0

Dritter Versuch:
Code: (dl )
1
2
3
4
5
use strict;
use warnings;
my $stuff = undef;
BEGIN { $stuff = 1; }
print "$stuff\n";

Ausgabe: 1

Was passiert hier? Entweder es ist schon zu spät oder ich bin einfach zu dumm, jedenfalls kann ich mir nicht erklären, warum nicht alle drei Programme 1 ausgeben. Besonders merkwürdig finde ich die Tatsache, dass der Startwert der mit my deklarierten Variablen offenbar einen Einfluss auf das Verhalten des Codes im BEGIN Block hat.
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