--- Dave Whipp <[EMAIL PROTECTED]> wrote: > Dulcimer wrote: > >>sub slow_fn { > >> my $tick = Timer.new(60, { print "..." }); > >> return slow_fn_imp @_; > >>} > >> > >>Now if I could just get the compiler to not complain about that > >>unused variable... > > > > > > Maybe I'm being dense.... > > Why not just > > sub slow_fn { > > Timer.new(1, { print "." }); > > return slow_fn_imp @_; > > }
Geez. I read my response this morning, which I wrote just before going to bed, and realized that I must've been dead on my feet. > The problem is that I want the timer to last for the duration of the > slow_fn_imp. If I don't assign it to a variable, then it may be GCed > at any time. I was making several assumptions which don't hold, apparently, such as that the underlying Timer would iterate until stopped. Not an ideal default, lol.... I thopught the point was to have the function print dots repeatedly, tho? > I've just realised, however, that I'm relying on it being destroyed > on leaving the scope. I'm not sure that the GC guarentees that. > I might need > > sub slow_fn { > my $timer is last { .stop } = Timer.new(60, { print "." }); > return slow_fn_imp @_; > } > > but that's starting to get cluttered again. I don't really consider that "clutter". It's clear and to the point, and Does What You Want. How about sub slow_fn { my $timer is last { .stop } = new Timer secs => 1, reset => 1, code => {print "."}; return slow_fn_imp @_; } so that the timer goes off after a second, prints a dot, and resets itself to go off again after another second? And I still like the idea of an expanding temporal window between dots: sub slow_fn { my $pause = 1; my $timer is last { .stop } = new Timer secs => $pause++, reset => {$pause++}, code => {print "."}; return slow_fn_imp @_; } As a sidenote, although it would actually reduce readability here, I'm still trying to wrap my brain thoroughly around the new dynamics of $_. Would this work correctly maybe? sub slow_fn { my $timer is last { .stop } = new Timer secs => $_=1, reset => {$_++}, code => {print "."}; return slow_fn_imp @_; } Isn't that $_ proprietary to slow_fn such that it *would* work? __________________________________ Do you Yahoo!? Yahoo! Calendar - Free online calendar with sync to Outlook(TM). http://calendar.yahoo.com