$xml =~ s#<(performerinfo)>(.*?)</\1> #{ my ($tmp, $data) = ($2); $tmp =~ s|<(\w+)><!\[CDATA\[(.*?)\]\]></\1> |{$data->{$1}=$2}|sgex; push(@models, $data) }#sgex;