#! /bin/perl -w use strict; use warnings; use XML::TreeBuilder; my $root = XML::TreeBuilder->new (); $root->parse (do {local $/; ;}); my $frame_marker = 'data'; my @dataNodes = $root->look_down ('_tag', 'data'); my $nodeCount; for my $nodeIndex (0 .. @dataNodes - 1) { my @strings = $dataNodes[$nodeIndex]->look_down ('_tag', 'string'); print "Data node " . ($nodeIndex + 1) . "\n"; print " ", $_->as_text (), "\n" for @strings; } __DATA__ 1 some stuff 1 some more stuff 1 yet more stuff 1 enough stuff 2 some stuff 2 some more stuff 2 yet more stuff 2 enough stuff 3 some stuff 3 some more stuff 3 yet more stuff 3 enough stuff