my $parser = XML::Rules->new( stripspaces => 7, rules => { _default => 'content', DATASOURCE => sub { my ($tag,$attrs) = @_; return '@'.$attrs->{NAME} => $attrs; }, NAGIOS => 'pass no content', }, ); my $data = $parser->parse($file); #use Data::Dumper; #print Dumper($data); foreach my $datasource (@{$data->{cur}}) { print $datasource->{ACT}, "\n"; }