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

kabel
 2003-08-06 01:23
#59552 #59552
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
folgender code behauptet, der hash sei leer:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
my %tags = (
a => \&anchor_handler,
img => \&image_handler,
frame => \&frame_handler,
);

sub dispatcher {
my ($self, $attributes, $tagname) = @_;
if (exists $tags{$tagname}) {
$tags{$tagname}->($self, $attributes);
}
}
}

was offensichtlich falsch ist. $tagname ist immer richtig initialisiert durch den HTML::Parser. die drei subroutinen werden direkt drunter implementiert; daran liegts net, hab die gerade mal hochgezogen, gleiches verhalten. das ist die einzige stelle, an der tags als variablenname vorkommt.

strict ist aktiv, sonst müsste er ja über die nicht-deklaration des hashes meckern, aber warum wird der nicht initialisert, so wie ich das will?!

folgendes funktioniert:
Quote
kabel@linux:~/progs/perl> perl
{
my %a = 1 .. 4;
sub print_a { foreach (keys %a) { print $_ . " => " . $a{$_} . "\n";}}
}

print_a ();
1 => 2
3 => 4
kabel@linux:~/progs/perl>


ich kann mir keinen reim darauf machen. übersehe ich etwas offensichtliches? ???
-- stefan

View full thread problem mit lexikalischen variablen