Mail::SpamAssassin::Timeout - safe, reliable timeouts in perl
# non-timeout code... my $t = Mail::SpamAssassin::Timeout->new({ secs => 5 }); $t->run(sub { # code to run with a 5-second timeout... }); if ($t->timed_out()) { # do something... } # more non-timeout code...
This module provides a safe, reliable and clean API to provide alarm(2)-based timeouts for perl code.
alarm(2)
Note that $SIG{ALRM} is used to provide the timeout, so this will not interrupt out-of-control regular expression matches.
$SIG{ALRM}
Nested timeouts are supported.
Constructor. Options include:
timeout, in seconds. Optional; if not specified, no timeouts will be applied.
Run a code reference within the currently-defined timeout.
The timeout is as defined by the secs parameter to the constructor.
Returns whatever the subroutine returns, or undef on timeout. If the timer times out, $t-<gttimed_out()> will return 1.
undef
$t-<gt
1
Time elapsed is not cumulative; multiple runs of run will restart the timeout from scratch.
run
Run a code reference, as per $t-<gtrun()>, but also catching any die() calls within the code reference.
die()
Returns undef if no die() call was executed and $@ was unset, or the value of $@ if it was set. (The timeout event doesn't count as a die().)
$@
Returns 1 if the most recent code executed in run() timed out, or undef if it did not.
run()
If called within a run() code reference, causes the current alarm timer to be reset to its starting value.
1 POD Error
The following errors were encountered while parsing the POD:
=over without closing =back
To install Mail::SpamAssassin, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mail::SpamAssassin
CPAN shell
perl -MCPAN -e shell install Mail::SpamAssassin
For more information on module installation, please visit the detailed CPAN module installation guide.