#!/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] ); } }