use strict; use XML::XPath; my $month = 1; my $min = 30; my $match = findmax($month,$min); foreach my $t(@$match){ print "$t->[0],$t->[1]\n"; } sub findmax{ my $month = shift; my $min = shift; $month = "-$month-"; my @result = (); my $xp = XML::XPath->new(filename => 'test.xml'); my $nodes = $xp->findnodes("//DailyWeatherRecord[contains(date,'$month') and temperature/maxdrybulb[\@number>$min]"); foreach my $node($nodes->get_nodelist){ push @result,[$xp->findvalue("./date",$node),$xp->findvalue(".//maxdrybulb/\@number",$node)]; } return \@result; } __END__ 1-1-2004,33.95