Hi,
ich habe in einem Perl-Skript folgende for-Schleife:
for(my $j = 0;$j < @name;$j++) {
$profilframe->Label( -image => $photos[$j], -background => 'sky blue' )->place(-x=>'5', -y => $y + 3);
$profilframe->Button( -text=>$name[$j], -background => 'sky blue', -font=>'{Bimini} 12 {bold}', -relief=>'flat', -activebackground => 'yellow', -command => sub { zeige_beschreibung($j); } )->place(-x=>'28p', -y => $y);
$y += 35;
}
Dadurch werden zwei Buttons erzeugt. Wie ihr seht, rufe ich bei command eine Subroutine mit einem Parameter auf. Der übergebene Parameter sollte beim ersten Button 0 sein und beim zweiten 1 (ist ja logisch, da $j ja bei jedem Schleifendurchlauf um 1 erhöht wird). Die dazugehörige Subroutine sieht so aus:
sub zeige_beschreibung {
print $_[0];
}
Drücke ich nun auf einen der Buttons (egal auf welchen), so wird stets 2 im DOS-Fenster ausgegeben (ich lasse ja mit "print $_[0];" den übergebenen Parameter ausgeben). Das wundert mich doch sehr, da er ja eigentlich beim ersten Button 0 und beim zweiten 1 ausgeben werden müsste. Weiß jemand, warum das so komisch ist und wie ich das ändern kann?
Gruß
TheDHK