#!/usr/bin/perl
use strict;
use warnings;
my $text = "Dies ist [fett]ein fetter Text[/fett].";
my %tags = (
fett => '%s',
kursiv => '%s'
);
# entweder so:
my $t=$text;
for my $key (keys(%tags))
{
$t=~s|\[$key\](.+?)\[/$key\]|sprintf($tags{$key},$1)|egs;
}
print "$t\n";
#oder so:
$t=$text;
$t=~s|\[([^\[\]\W]+)\](.+?)\[/\1]|replace($1,$2)|egs;
print "$t\n";
sub replace
{ return sprintf($tags{shift(@_)},shift(@_)) }