in reply to brutally stop a perl program if it runs too long

Depending on how time-sensitive your operation is, and its nature, something like this might work:

my $n_secs = 30; #seconds after which we die. my $start = time; ## each iteration of this loop is short, but the whole ## thing is long while ( $some_condition ) { die 'We ran too long!' if time-$start >= $n_secs; ## do stuff ## }

Of course, this will fail miserably if you can't check time regularly; since I don't know what your implementation looks like, I can't say if it will work for you or not. As for putting it in a module:

package RunKiller; sub new { my $self = shift; my $obj = { timer => time(), length => shift }; bless $obj, $self; return $self; } sub check { my $self = shift; die 'Ran too long!' if time-($self->{timer}) >= $self->{length}; } 1;

Called like:

require RunKiller; my $runtimer = RunKiller->new(30); #30s run length. while (1) { $runtimer->check(); ## do something ## }
<-radiant.matrix->
Larry Wall is Yoda: there is no try{} (ok, except in Perl6; way to ruin a joke, Larry! ;P)
The Code that can be seen is not the true Code
"In any sufficiently large group of people, most are idiots" - Kaa's Law