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) } }