#!/usr/bin/perl use strict; use warnings; # use module use XML::Simple; use Data::Dumper; our %pubmed_data; my $xml = new XML::Simple (KeyAttr=>[]); my $data = $xml->XMLin("data1.txt"); traverse( $data ); sub traverse { our %pubmed_data; my ($element) = @_; if( ref( $element ) =~ /HASH/ ) { foreach my $key (keys %$element) { traverse( $$element{$key} ); } } elsif( ref( $element) =~ /ARRAY/ ) { traverse( $_ ) foreach @$element; } else { if (exists $pubmed_data{$element} ) { $pubmed_data{$element}++; } else { $pubmed_data{$element} = 1; } } } #### Miller S I SI