in reply to Re^3: Stop runaway regex
in thread Stop runaway regex
Just taking the code from alarm and embedding (dummy) code into a long running regex
Generally I try to avoid alarm...
use strict; use warnings; my $start; my $diff; my $timeout; sub tst { $timeout=shift; my $str = "a"x10000; $str .= "b"; eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm $timeout; $str =~ /^ (( a* (?{1}) # dummy code )*)* $/x; alarm 0; }; if ($@) { die unless $@ eq "alarm\n"; # propagate unexpected errors die "timed out after $timeout sec :". time(); } else { print "normal"; } } tst($_) for 2;
output
Complex regular subexpression recursion limit (32766) exceeded at /hom +e/lanx/B/PL/PM/timeout_regex.pl line 18. Compilation segmentation fault at Fri May 30 17:41:48
Cheers Rolf
( addicted to the Perl Programming Language)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Stop runaway regex
by mr_mischief (Monsignor) on May 30, 2014 at 15:53 UTC |