use XML::Twig; my $twig = XML::Twig->new(keep_encoding => "true"); $twig->parse("$string"); foreach my $product ($twig->root->children('produto')) { my $sibling = $product->first_child(); my %produto; do { $produto{$sibling->tag()} = $sibling->child_text(); } while($sibling = $sibling->next_sibling()); $product{nome} =~ s/\s+//g; ...................... }