use XML::Simple; use Data::Dumper; my $data=qq(xyzabcd1234567895565655612345678955656556UTVEFGH12345678955656556); my $ref=XMLin($data); print Dumper($ref); which shows output $VAR1 = { 'Phone' => [ { 'Home' => '55656556', 'Mobile' => '123456789' }, { 'Home' => '55656556', 'Mobile' => '123456789' }, { 'Home' => '55656556', 'Mobile' => '123456789' } ], 'Name' => [ { 'Lname' => 'xyz', 'Fname' => 'abcd' }, { 'Lname' => 'UTV', 'Fname' => 'EFGH' } ] }; #### #on above $data i can split up the above string with each #Name tag followed by Phone tags associated with this my @namephn=map{m/.*?<\/Phone>/g } $data; print join "\n",@namephn; #---------- Output ------------- xyzabcd12345678955656556 UTVEFGH12345678955656556