use feature qw(say); use Data::Dumper; my $data =<<'XML-type'; someValuesomeValuesomeValue someValuesomeValuesomeValue someValuesomeValue someValuesomeValuesomeValuesomeValue XML-type my @processed; local $/ = ''; open STRH , '<', \($data); my @items = ; close STRH; @processed = map { my $item =$_; $item =~ s/<.?item>//g; push @processed, {$item =~ m { <([^>]+)>([^<]+)< }gx}; } @items; print Dumper \@processed;