use strict;
use XML::Rules;
my $member;
my $parser = XML::Rules->new(
stripspaces => 7,
rules => {
_default => 'content',
mem => sub {
print join( '|', ++$member, map {(my $s = $_[1]->{$_}) =~ s/\|//; $s} qw(member add1 add2 add3 suburb state pcode)), "\n";
return;
}
},
);
$parser->parse(\*DATA);
__DATA__
<root>
<mem>
<member>member</member>
<add1>add1</add1>
<add2>add2</add2>
<add3>add3</add3>
<suburb>suburb</suburb>
<state>state</state>
<pcode>pcode</pcode>
</mem>
<mem>
<member>other</member>
<add1>ADD1</add1>
<add2>ADD2</add2>
<add3>ADD3</add3>
<suburb>suburb 2</suburb>
<state>state</state>
<pcode>pcode</pcode>
</mem>
</root>