Thread Zeitbegrenzung für reguläre Ausdrücke (40 answers)
Opened by Crian at 2005-04-25 13:24

Crian
 2005-04-25 16:52
#54168 #54168
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
So, ich hab das Beispiel mal bei mir angepasst eingebaut, leider bricht er aber nicht nach den angegebenen 15 Sekunden ab. Der Code sieht jetzt so aus:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use constant TIMEOUT => 15; # Sekunden, nach der eine Regel abgeschossen wird.

...

my @allmatch;
my ($m1, $m2, $m3);
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm TIMEOUT;
@allmatch = $ts =~ $composite->data()->[$i]->{re};
($m1, $m2, $m3) = ($`, $&, $');
alarm 0;
};
if ($@) {
die "Matcherror: $@\n" unless $@ eq "alarm\n"; # propagate unexpected errors
# Markieren, dass dieser Satz wegen timeout nicht vollständig bearbeitet ist!
warn "ABBRUCH WEGEN ZEITUEBERSCHREITUNG (Regel $regelname)\n";
next SENTENCE;
}
...


Hab ich irgendwas dummes übersehen oder liegt hier ein grundsätzliches Problem vor?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Zeitbegrenzung für reguläre Ausdrücke