in reply to parse xml and store data in array of hashesh

To build an array of hashes , you need to store, hashrefs in the array, like this
#!/usr/bin/perl -- use strict; use warnings; my %foo = 1..2; my @bar = %foo; push @bar, \%foo; use Data::Dumper; print Dumper( \@bar ); __END__ $VAR1 = [ '1', 2, { '1' => 2 } ];

See the \ operator takes a reference, to an array (\@array), to a hash (\%hash), to a scalar (\$scalar)

See Tutorials: References quick reference

Replies are listed 'Best First'.
Re^2: parse xml and store data in array of hashesh
by osprofi (Initiate) on Jul 23, 2011 at 07:52 UTC
    Hi, thanks very much for quick repl; but even with stored hash references in sub _end; the array @cb does not have data when trying to print them Greetings, Peter
      Hi, you're welcome :)

      You made it very easy as your question was very effective (How do I post a question effectively? , How do I compose an effective node title?).

      Here is a similar approach using XML::Twig

      #!/usr/bin/perl -- #~ 2011-07-23-08:42:20+0000 by Anonymous Monk #~ perltidy -csc -otr -opr -ce -nibc -i=4 use strict; use warnings; use autodie; # dies if open/close... fail use Data::Dumper; use XML::Twig; Main( @ARGV ); exit( 0 ); sub Main { Demo(); } sub NotDemoMeaningfulName { my ($xml) = @_; my @data; my %site; my $t = XML::Twig->new( twig_handlers => { '//Site' => sub { warn $_->path; push @data, {%site} if %site; %site = (); $_->purge; # free memory }, '//Site/Id' => sub { warn $_->path; $site{Id} = $_->trimmed_text; }, '//Site/Title' => sub { warn $_->path; $site{Title} = $_->trimmed_text; }, }, ); $t->xparse($xml); $t->purge; return \@data; } ## end sub NotDemoMeaningfulName sub Demo { my $ref = NotDemoMeaningfulName( DemoData() ); print Dumper($ref); } sub DemoData { #~ http://perlmonks.com/?abspart=1;displaytype=displaycode;node_id=916 +054;part=1 my $xml = <<'__XML__'; <Catalog> <Category> <Name>Arts &amp; Entertainment</Name> <Site> <Id>01-id...</Id> <Title>01-title...</Title> </Site> <Site> <Id>02-id...</Id> <Title>02-title...</Title> </Site> </Category> </Catalog> __XML__ return $xml; } ## end sub DemoData __END__ $ perl xml.twig.916054.pl /Catalog/Category/Site/Id at xml.twig.916054.pl line 30. /Catalog/Category/Site/Title at xml.twig.916054.pl line 34. /Catalog/Category/Site at xml.twig.916054.pl line 24. /Catalog/Category/Site/Id at xml.twig.916054.pl line 30. /Catalog/Category/Site/Title at xml.twig.916054.pl line 34. /Catalog/Category/Site at xml.twig.916054.pl line 24. $VAR1 = [ { 'Id' => '01-id...', 'Title' => '01-title...' }, { 'Id' => '02-id...', 'Title' => '02-title...' } ];