use Tk; use strict; my $i; my @var1; my $var2; my $status; my $mw = MainWindow->new; #fill @var1 with zeros... for ($i = 0; $i <= 81; $i++) {$var1[$i] = 0;} #Do a similar thing with $var2 $var2 = 0; my $frame_01 = $mw->Frame(-background=>'grey')->pack(-side=>'top', -fill => 'x'); my $frame_12 = $mw->Frame(-background=>'grey')->pack(-side=>'top', -fill => 'x'); my $frame_13 = $mw->Frame(-background=>'grey')->pack(-side=>'top', -fill => 'x'); my $frame_14 = $mw->Frame(-background=>'grey')->pack(-side=>'top', -fill => 'x'); my $frame_15 = $mw->Frame(-background=>'grey')->pack(-side=>'top', -fill => 'x'); $i = 1; $frame_01->Label(-text => "$i:", -width=>2, -relief => 'flat') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_01->Label(-text => " ", -width=>1, -relief => 'raised') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_01->Entry(-textvariable => \$var1[$i++], -width=>2, -relief => 'sunken') ->pack(-side =>'left'); $frame_12->Button(-text => "var1 1", -command => sub { change_var1_1(@var1); }) ->pack(-side => 'left'); $frame_12->Button(-text => "var1 2", -command => sub { @var1 = change_var1_2(@var1); }) ->pack(-side => 'left'); $frame_12->Button(-text => "CHG var1 3", -command => sub { $var1[3] = 2;}) ->pack(-side => 'left'); $frame_12->Button(-text => "CHG var1 5", -command => sub { $var1[5] = 7;}) ->pack(-side => 'left'); $frame_13->Button(-text => "var2 1", -command => sub { change_var2_1($var2); }) ->pack(-side => 'left'); $frame_13->Button(-text => "var2 2", -command => sub { $var2 = change_var2_2($var2); }) ->pack(-side => 'left'); $frame_13->Button(-text => "CHG var2", -command => sub { $var2 = 3;}) ->pack(-side => 'left'); $frame_14->Label(-text => "var1[3] is:", -relief => 'flat') ->pack(-side =>'left'); $frame_14->Label(-textvariable => \$var1[3], -relief => 'flat') ->pack(-side =>'left'); $frame_14->Label(-text => ", var1[5] is:", -relief => 'flat') ->pack(-side =>'left'); $frame_14->Label(-textvariable => \$var1[5], -relief => 'flat') ->pack(-side =>'left'); $frame_14->Label(-text => ", var2 is:", -relief => 'flat') ->pack(-side =>'left'); $frame_14->Label(-textvariable => \$var2, -relief => 'flat') ->pack(-side =>'left'); $frame_15->Label(-text => "Status", -relief => 'flat') ->pack(-side =>'left'); $frame_15->Label(-textvariable => \$status, -relief => 'flat') ->pack(-side =>'left'); MainLoop(); sub change_var1_1 { @var1 = change_var1_2(@var1); $status = "change_var1_1 called $var1[3], $var1[5]"; } sub change_var2_1 { $var2 = change_var2_2($var2); $status = "change_var1_1 called $var2"; } sub change_var1_2 { my @lv_1 = @_; $lv_1[3] = 6; #$var1[3] = 6; # this works if you uncomment it $status = "change_var1_2 called $lv_1[3]"; return(@lv_1); } sub change_var2_2 { my $lv_2 = @_[0]; $lv_2 = 6; $status = "change_var2_2 called $lv_2"; return($lv_2); }