Thread Funktion mit Parameterübergabe: Parameter-Variable wird falsch gesetzt (6 answers)
Opened by TheDHK at 2007-01-22 16:04

TheDHK
 2007-01-22 16:04
#73488 #73488
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Hi,
ich habe in einem Perl-Skript folgende for-Schleife:
Code (perl): (dl )
1
2
3
4
5
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:
Code (perl): (dl )
1
2
3
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

View full thread Funktion mit Parameterübergabe: Parameter-Variable wird falsch gesetzt