ghosh123 has asked for the wisdom of the Perl Monks concerning the following question:

Hi
I have a repeat() function in my perl tk code which should by default invoke a routine every 5 secs.

$mw->repeat(5000, \&func() );

How can I change its timer through an Entry box widget. Suppose I have an Entry box widget and whatever value I put in it, the repeat() should call the event with that frequency instead of the default.

my $entry = $frame->Entry(-textvariable=>\$time)->pack;

I have seen this link below , but not quite able to figure out how to do it, please give an example
http://search.cpan.org/dist/Tk/pod/after.pod
Thanks.

Replies are listed 'Best First'.
Re: perl tk repeat() problem
by BrowserUk (Patriarch) on Feb 22, 2013 at 15:02 UTC

    If you assign the return value to a variable:  my $timer = $mw->repeat(5000, \&func() );,

    then when it is time to change it, you can cancel the old one: $timer->cancel;

    and then re-create it with the new values: $timer = $mw->repeat( $time, \&func() );


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re: perl tk repeat() problem
by Anonymous Monk on Feb 22, 2013 at 15:04 UTC
    funny :)
    sub func { if ( $oldtimeout != $time ){ ## cancle timer $oldtimeout = $time; ## re-schedule timer } }