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

I've recently started learning perl, and have been writing simple little useless scripts to practice and have come to a dead end in the one im currently working on. Its a music player, it searches, loads, makes playlists and such and is working like i intended except for the fact that i have to change all songs manually do to the fact that i cant count down the seconds till the song is finished to change AND get input from <STDIN> for directing the script. I was wondering if there was a way to use the alarm function and $SIG{ALRM} to call a subroutine after the alarm goes off? So that i could set the alarm for the song length, then use the subroutine to change songs after its completed AND wait for user input to change volume or playlists and such. I would post the code even though its irrelevant but im not quite sure how to quote it in those fancy code blocks :D thanks so much Ryan

Replies are listed 'Best First'.
Re: Question about alarm()
by lostjimmy (Chaplain) on Mar 05, 2009 at 21:59 UTC

    I think another approach you might consider taking would be spawning off the music player in a separate thread and taking the input on the main thread, or vice versa.

    Take a look at Markup in the Monastery to find out how to use those handy code tags and others ;)

      I had a similar problem with a TK GUI app I wrote. I found using alarm to be the best solution as threads are great however sending and receiving data can get quite complex pretty quick.

      try

      my $timer_start = $mw->after(1000 => \&yoursub); $mw->afterCancel($timer_start);
      thanks skywalker