Thread regex matching ist lahm (27 answers)
Opened by Gast at 2005-07-21 04:47

Strat
 2005-07-21 15:18
#56560 #56560
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
versuch mal:
Code: (dl )
1
2
3
4
5
6
if ($element eq "host1.com" or $element eq "host2.de" or $element eq "host3.org") {
...
}
elsif ($element eq 'host5.cyx' ....) {

}

wenn du nach fixen ausdruecken suchst, ist ein eq immer schneller als eine RE
und wenn du nur nach teilen suchst (also ob da ein host1.de vorkommt), dann ist index (oder hier vielleicht sogar besser rindex dein freund)
Code: (dl )
1
2
3
if (rindex($element, "host1.com") > -1 or 
   rindex($element, "host2.de")  > -1 or
   rindex($element, "host3.org") > -1) {


anstelle des ersten beispieles kannst du auch das switch-aendliche konstrukt durch einen hash ersetzen, wenn immer dieselben Parameter uebergeben werden:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
my %switch = (
 "host1.com" => \&DoAction1,
 "host2.de"   => \&DoAction1,
 "host3.xyz"  => \&DoAction2,
 "host4.das"  => \&DoAction3);

if (exists $switch{$element} and ref($switch{$element} eq 'CODE') {
 $switch->$element->($param1, $param2, $param3, ...)
}
else {
 die "Error: no action for '$element' specified\n";
}
sub DoAction1 {
 my ($p1, $p2, $p3) = @_;
 print "Action1\n";
}
sub DoAction2 {
 my ($p1, $p2, $p3) = @_;
 print "Action2\n";
}
sub DoAction3 {
 my ($p1, $p2, $p3) = @_;
 print "Action3\n";
}

oder so aehnlich\n\n

<!--EDIT|Strat|1121944752-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread regex matching ist lahm