Arranges to have a SIGALRM delivered to this process after the
specified number of wallclock seconds has elapsed. If SECONDS is not
specified, the value stored in
is used. (On some machines,
unfortunately, the elapsed time may be up to one second less or more
than you specified because of how seconds are counted, and process
scheduling may delay the delivery of the signal even further.)
Only one timer may be counting at once. Each call disables the
previous timer, and an argument of
may be supplied to cancel the
previous timer without starting a new one. The returned value is the
amount of time remaining on the previous timer.
For delays of finer granularity than one second, you may use Perl's
four-argument version of select() leaving the first three arguments
undefined, or you might be able to use the
syscall interface to
access setitimer(2) if your system supports it. The Time::HiRes
module (from CPAN, and starting from Perl 5.8 part of the standard
distribution) may also prove useful.
If you want to use
alarm to time out a system call you need to use an
die pair. You can't rely on the alarm causing the system call to
because Perl sets up signal handlers to
restart system calls on some systems. Using
die always works,
modulo the caveats given in Signals in perlipc.
For more information see perlipc.