#!/usr/bin/perl use Win32::GUI; my $w = 800; my $h = 800; my $i; $main = Win32::GUI::Window->new( -name => 'main', -width => $w, -height => $h, -menu => $menu, ); $main->AddButton( -height => 20, -width => 100, -text => 'Go!', -name => 'execute', -top => 20, -left => 650, -tabstop => 1, ); $main->Show(); Win32::GUI::Dialog(); sub another_sub { $top = 50; for ($x = 0; $x <= 2; $x++) { $uniqueWindow[$i] = $main->AddTextfield( -height => 200, -width => $w-30, -background => [255,255,255], -top => $top, -left => 10, -text => "", -name => $i."Textfield", -align => left, -readonly => 1, -multiline => 1, -autovscroll => 1, -vscroll => 1, ); $uniqueWindow[$i]->SetLimitText(1000); $top+=205; $i++; } } sub execute_Click { another_sub(); foreach $j (0..$i-1) { $SUB = $j."Textfield_MaxText"; print "-->Assigning sub function for $j\n"; my $idx = $j; # make a copy my $SUB = "${idx}Textfield_MaxText"; *$SUB = sub { variableMaxText( $idx ); } } for ($x=0;$x<100;$x++) { foreach my $txt (0..$i-1) { $uniqueWindow[$txt]->Append("Characters to make it overflow"); } } } sub variableMaxText { my ($self) = $_[0]; print "Variable window got maxtexted ($self).\n"; $uniqueWindow[$self]->Text(""); } #### foreach $j (0..$i-1) { $SUB = $j."Textfield_MaxText"; print "-->Assigning sub function for $j\n"; my $SUB = "${idx}Textfield_MaxText"; *$SUB = sub { variableMaxText( $j ); } } #### -->Assigning sub function for 0 -->Assigning sub function for 1 -->Assigning sub function for 2 Variable window got maxtexted (1). Variable window got maxtexted (2). Variable window got maxtexted (1). Variable window got maxtexted (2). #### -->Assigning sub function for 0 -->Assigning sub function for 1 -->Assigning sub function for 2 Variable window got maxtexted (). Variable window got maxtexted (). #### -->Assigning sub function for 0 -->Assigning sub function for 1 -->Assigning sub function for 2 Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2). Variable window got maxtexted (2).