#!/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(@_)) }