in reply to How do I pass a reference to another program via @ARGV ???
Simple thread with feedback:
#!/usr/bin/perl use warnings; use strict; use Tk; use threads; use threads::shared; my $go : shared; my $die : shared; my $step_set : shared; my $feedback : shared; $go = 0; $die = 0; $step_set = 0; $feedback = 0; my $repeater; my $stepper = 0; my $feedback_display = 0; my $thread = threads->new(\&work); my $mw = MainWindow->new( -title => "Stepper Test" ); my $entry = $mw->Entry(-textvariable => \$stepper)->pack(); my $indicator = $mw->Label(-textvariable => \$feedback_display)->pack( +); $mw->Button(-text=>'Start Stepper', -command=> sub { $step_set = $stepper; $go = 1; # timer to read shared vars $repeater = $mw->repeat(10,sub{ $feedback_display = $feedback; if( $feedback_display == $stepper){ $go =0; } }); })->pack(); $mw->Button(-text=>'Exit', -command=> sub { $go = 0; $die = 1; # must return before joining $repeater->cancel; # JOIN ALL THREADS foreach my $thread (threads->list) { $thread->join; + } exit; })->pack(); MainLoop; sub work{ $|++; while(1){ if($die == 1){ return }; if ( $go == 1 ){ for(0..$step_set){ print "$_\n"; $feedback = $_; select(undef,undef,undef,.5); } }else { sleep 1 } } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How do I pass a reference to another program via @ARGV ???
by aplonis (Pilgrim) on Dec 17, 2006 at 02:00 UTC | |
by aplonis (Pilgrim) on Dec 27, 2006 at 03:10 UTC |