#!/usr/bin/perl -slw use strict; use Data::Dump qw(dump pp); use XML::Rules; my $parser = XML::Rules->new( rules => { parameters => sub { return '+has_uint64' => ($_[1]->{type} eq 'uint64_t'); }, members => sub { my ($tag,$attr,$context,$parents) = @_; return unless $context->[-2] eq 'classes'; my $class = $parents->[-2]{name}; (my $access = $context->[-1]) =~ s/_methods//; print "$access $class.$attr->{name} has $attr->{has_uint64} uint64 parameter(s)\n" if ($attr->{has_uint64}); return; }, '^enums' => 'skip', } ); $parser->parse(\*DATA); __DATA__ ...