#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; use XML::TreeBuilder; my $tree = XML::TreeBuilder->new(); $tree->parse(<<'__XML__'); Goserelin yes yes yes __XML__ foreach my $drug ( $tree->find_by_tag_name('drug') ) { my @targets = $drug->look_down( '_tag', 'target' ); for my $target ( @targets ){ print $target->attr('partner'), "\t"; } print "\n"; my @act = $drug->look_down( '_tag', 'known-action' ); @act = map { $_->as_trimmed_text } @act; print join "\t", @act, "\n"; }