#!/usr/bin/perl use strict; use warnings; my $text = "Dies ist [fett]ein fetter Text[/fett]. [kursiv]Dieser ist Kursiv.[/kursiv] und hier haben wir die Farbe [color=#FF0000]rot[/color]"; my %tags = ( fett => '%s', kursiv => '%s', color => '
%s
', ); my $t=$text; $t=~s|\[([^\[\]\W]+)\](.+?)\[/\1]|replace($1,$2)|egs; $t=~s|\[([^\[\]\W]+)=([^\[\]]+)\](.+?)\[/\1]|replace_opt($1,$2,$3)|egs; print "$t\n"; sub replace { return sprintf($tags{shift(@_)},shift(@_)) } sub replace_opt { return sprintf($tags{shift(@_)},shift(@_),shift(@_)) }