Thread RegEx: optionale Matches an Subroutine weitergeben (31 answers)
Opened by Froschpopo at 2007-09-25 23:57

Froschpopo
 2007-09-29 01:39
#100154 #100154
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Aber wir sollten vorher checken, warum das nicht zuverlässig funktioniert.
hast du herausgefunden WANN dieser Zufall eintritt?
Es verwirrt mich wenn wir eine neue Funktion einfügen und die alte funktioniert nicht fehlerfrei. Dann fällt wegen des vielen Textes die Fehleranalyse schwerer.

Anbei will ich dir mal zeigen was ich daraus gemacht habe:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl

use strict;
use warnings;

my $body = "Das ist [BILD=margin.gif] und seine Homepage ist [LINK=http://www.martin.de]hier[/LINK]\n";

$body =~ s!\[((\w+).+?)\](?:(.+?)\[/\2\])?!allocate((map{split(/\s+(?=\w+$)/,$_)}split(/\s*=\s*/,$1)),$3?('INHALT',$3):())!gse;

sub allocate {
my %params = @_;
if (exists($params{BILD})) {
return &image(\%params);

} elsif (exists($params{LINK})) {
return &link(\%params);

} elsif (exists($params{HEADLINE})) {
return &headline(\%params);

} else {
return "!!Unbekannter Befehl!!"
}
}

sub image {
my $args = shift;
my $file = $args->{BILD};

chdir("/srv/www/seite/images/")
or die "Order nicht gefunden";
if (-e $file) {
my $text = $args->{TEXT};
my ($width, $height) = imgsize($file);
my $html = "<p class=\"bildabsatz\"><img src=\"/images/$file\" width=\"$width\" height=\"$height\"> <span>$text</span><p>\n";
return $html;
} else {
return "Bild nicht gefunden";
}
}

sub link {
my $args = shift;
return "<a href=\"$args->{LINK}\">$args->{INHALT}</a>";
}

View full thread RegEx: optionale Matches an Subroutine weitergeben