Thread irssi: mehrere RegEx in einer Zeile traversieren
(4 answers)
Opened by Cthulhux at 2013-08-04 17:46
'hoi,
mein IRC-Bot (Sammlung von Perlskripten in irssi) kann unter anderem Wikipedia-Links umwandeln. Beispiel: Quote Das klappt auch ganz gut - mit einem einzigen Link. Sobald es mehr werden, funktioniert das aber nicht mehr so recht: Quote Wahrscheinlich muss ich da nur irgendwas mit while einbauen, richtig? Code (perl): (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 use strict; use Encode qw(encode decode); use Irssi qw(signal_add); sub linkify { my ($text) = @_; $text =~ s/ /_/gm; $text =~ s/\[\[|\]\]|\{\{|\}\}//gm; return $text; } sub wikilink { my ($server, $message, $nick, $address, $target) = @_; $_ = decode('utf-8',$message); # recognize umlauts if (/\[\[(\w|\s|!|#|\/|\.|-|\(|\)|\\|{|}|_|^|°|,|`|\/|;|'|\:|\[|\])*\]\]/i { my $wplink = linkify($&); my $retval = "http://de.wikipedia.org/wiki/" . encode('latin1',$wplink); $server->command("MSG $target $retval"); } elsif (/\{\{(\w|\s|!|#|\/|\.|-|\(|\)|\\|{|}|_|^|°|,|\`|\/|;|'|\:|\[|\])*\}\}/i) { my $wplink = linkify($&); my $retval = "http://de.wikipedia.org/wiki/Vorlage:" . encode('latin1',$wplink); $server->command("MSG $target $retval"); } return 0; } signal_add("message public","wikilink"); (Dass da einige irssi-spezifische Erweiterungen drin sind, stört hoffentlich nicht. Das Problem selbst sollte ja auf Perlbasis lösbar sein...?) Hoffe auf Hilfe. |