Thread problem mit lexikalischen variablen (17 answers)
Opened by kabel at 2003-08-06 01:23

kabel
 2003-08-06 19:22
#59560 #59560
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
nein, der compiler kennt %tags zu diesem zeitpunkt gar nicht.

Quote
kabel@linux:~/progs/perl> cat pad_test.pl
use strict;
use PadWalker qw/ peek_my /;

print_hiho ();
my $a = "hohi";
my $lex_vars = peek_my (0);
print "der hash hiho existiert ";
unless (exists ($lex_vars->{'%hiho'})) {
print "nicht!";
}
print "!\n";
print "\$a existiert aber\n" if exists $lex_vars->{'$a'};


my %hiho = 1 .. 6;


sub print_hiho {
while (my ($key, $value) = each %hiho) {
print "$key -> $value\n";
}
}
kabel@linux:~/progs/perl> perl -w pad_test.pl
der hash hiho existiert nicht!!
$a existiert aber
kabel@linux:~/progs/perl>


strict meckert nicht, da %tags ja mit my deklariert ist, ABER strict geht anscheinend nur mal quer drüber und teilt dem compiler NICHT mit, dass da lexikalische variablen existieren - sonst müsste er im beispiel den hash finden - tut er aber nicht!

Quote
kabel@linux:~/progs/perl> perl
use strict;
my $hiho if 0;
$hiho = "hallo!";

print "$hiho\n";
hallo!
kabel@linux:~/progs/perl>

strict arbeitet anscheinend auf source-code ebene ... um da näheres zu erfahren, müsste einer eine ebene in die perl source reingehen :graus: ;)
-- stefan

View full thread problem mit lexikalischen variablen