#!/usr/bin/perl use warnings; use strict; use XML::LibXML::Reader; #Reading XML with a pull parser my $file; open( $file, 'formal.xml'); my $reader = XML::LibXML::Reader->new( IO => $file ) or die ("unable to open file"); my %nums; while ($reader->nextElement( 'Data' ) ) { my $des = $reader->readOuterXml(); $reader->nextElement( 'Number' ); my $desnode = $reader->readInnerXml(); $nums{$desnode}= $des; print( " NUMBER: $desnode\n" ); print( " Datainfo: $des\n" ); } #### #!/usr/bin/perl package Mymodule; use warnings; use strict; use Exporter qw(import); use Carp; use XML::LibXML::Reader; our @EXPORT_OK(myFunction); sub MyFunction { my $fh = shift; my $reader = XML::LibXML::Reader->new( IO => $fh ) or die ("unable to open file"); my %nums; while ($reader->nextElement( 'Data' ) ) { my $des = $reader->readOuterXml(); $reader->nextElement( 'Number' ); my $desnode = $reader->readInnerXml(); $nums{$desnode}= $des; } return %nums; } 1; my main function #!/usr/bin/perl use warnings; use strict; use Mypackage qw(myFunction); my $file; open( $file, 'formal.xml'); my %returnedHash = myFunction($file);