#!/usr/bin/perl -w # $Id: bench_simple_extract,v 1.2 2003/09/19 18:52:26 mrodrigu Exp $ use strict; use simple_benchmark; # to get memory size use XML::Simple; use Getopt::Long; my( $in_file); GetOptions( 'in_file=s' =>\$in_file); $in_file ||= 'test.xml'; my $xml= XMLin( $in_file, force_array => 1, force_content => 1); my @messages; extract_messages( $xml); print join( "\n", @messages); sub extract_messages { my $node= shift; while( my( $key, $value)= each %$node) { if( $key eq 'message') { push @messages, map { $_->{content} } @$value } elsif( ref $value eq 'ARRAY') { foreach my $hash (grep { ref $_ eq 'HASH' } @$value) { extract_messages( $hash) } } } }