while ( ( $xml =~ /(<([a-zA-Z0-9\-_]+)>)/ ) ) {
my $tagName = $2;
my $tag = $1;
if ( ( $xml =~ /<($tagName)>(.*?)<\/$tagName>/i/s ) ) {
# gefunden tag speichern
my $tag = $1;
# von $tag umschlossenen text suchen
$xml =~ /(<$tag>(.*?)<\/$tag>)/i/s;
# value speichern
$value = $2;
# gesamten gefundenen tag loeschen
$xml =~ s/(<$tag>(.*?)<\/$tag>)//i/s;
$xml{ lc($tag) } = $value;
}
else {
$xml =~ s/$tag//
; # gefundenen anfangstag loeschen (da kein endtag vorhanden)
}
}