#!/usr/bin/perl use warnings; use strict; use Tk; my @SLIDERVALUES = (0,0,0,0); my @slider; my $i; sub show_array { print "\@SLIDERVALUES = ($SLIDERVALUES[0], $SLIDERVALUES[1], $SLIDERVALUES[2], $SLIDERVALUES[3])\n"; } # window setup my $mw = MainWindow->new; foreach my $i (0 .. 3) { $slider[$i] = $mw->Scale( -from => 30, -to => 0, -orient => 'vertical', -variable => \$SLIDERVALUES[$i], # -command => undef, )->pack(-side => 'left'); } show_array(); # This breaks things! @SLIDERVALUES = (5, 10, 15, 20); show_array(); slider_update(); $SLIDERVALUES[0] = 7; $SLIDERVALUES[1] = 14; $SLIDERVALUES[2] = 21; $SLIDERVALUES[3] = 28; show_array(); slider_update(); $mw->update; MainLoop; ############################################# sub slider_update{ foreach my $i (0 .. 3) { $slider[$i]->set( $SLIDERVALUES[$i] ); } } #### #!/usr/bin/perl use warnings; use strict; use Tk; my ($s1,$s2,$s3,$s4) =(0,0,0,0); my @slider; my $i; sub show_vals { print "SLIDERVALUES = $s1 $s2 $s3 $s4\n"; } # window setup my $mw = MainWindow->new; $slider[1] =$mw->Scale( -from => 30, -to => 0, -orient => 'vertical', -variable => \$s1, )->pack(-side => 'left'); $slider[2] = $mw->Scale( -from => 30, -to => 0, -orient => 'vertical', -variable => \$s2, )->pack(-side => 'left'); $slider[3] = $mw->Scale( -from => 30, -to => 0, -orient => 'vertical', -variable => \$s3, )->pack(-side => 'left'); $slider[4] = $mw->Scale( -from => 30, -to => 0, -orient => 'vertical', -variable => \$s4, )->pack(-side => 'left'); show_vals(); ($s1,$s2,$s3,$s4) = (5, 10, 15, 20); show_vals(); ($s1,$s2,$s3,$s4) = (7, 14, 21, 28); show_vals(); $mw->update; MainLoop;