PerlTk Bug?

Ich hab schonmal einen Threat hierrüber geschrieben, allerdings ist der irgendwo hier im Forum untergegangen... :(


Code:
use strict;
use Tk;

[...]

for(my $i=1; $i <5; $i++){
    my $entry = $main_wndow -> Entry();
    $entry -> bind('<KeyPress>',  sub{ print($i) } );
}

MainLoop();

# ^
# gibt immer 6  -  wohl 5+1 wegen der for-schleife - aus...
Code:
use strict;
use Tk;

[...]

for(my $i=1; $i <5; $i++){
    $x=0;
    my $entry = $main_wndow -> Entry();
    $entry -> bind('<KeyPress>',  sub{ print($x) } );
    $x=1;
}

MainLoop();

# ^
# gibt immer 1  -  obwohl $x direkt vorher auf 0 gesetzt wird - aus...


Ist das "normal" ?

Mein Problem ist, dass ich einen Wert der vorherigen Zelle benötige, da aber net rankomme, da mein Zähler innerhalb von "sub { }" ja "konstant" ist...
 
Erklär doch mal eindeutiger, was du machen willst (Was soll das Programm können?). Erklärs anschließend am besten auch am Beispiel-Code, wenn nötig Zeile für Zeile. Kein Wunder, dass du keine Antwort bekommst.
 
naja es hat sich inzwischen erledigt, habs nu gelöst.

Problem war dass die Rückgabe der Funktion die der Entry bei Tastendruck gibt nie korrekt war.
Anstatt dass der 1. Entry 1 zurückgibt, der 2. 2, der 3.3, ...
gaben hier im Beispiel alle den Wert 6 zurück, sprich der1. wert bei dem die Schleife nichtmehr ausgeführt wird...

man muss $i mit einem Backslash maskieren damit es den Wert behällt :)
 
Zurück
Oben