XML::Twig を使用して次の XML 構造から特定のノードのセットを抽出しようとしましたが、それ以来スタックしています。次の構造から「プレーヤー」ノードを抽出し、これらのノード値のそれぞれに対して文字列の一致/置換を行う必要があります。
<pep:record>
<agency type="player">
<subrecord type="scout">
<isnum>123XXX (print)</isnum>
<isnum>234YYY (mag)</isnum>
</subrecord>
<subrecord type="group">
</subrecord>
</agency>
</record>
次のコードを使用してみましたが、実際の文字列ではなくハッシュ参照を指しています。
my $parser = XML::Twig->new(twig_handlers => {
isnum => sub { print $_->text."::" },
});
foreach my $rec (split(/::/, $parser->parse($my_xml))) {
if ($rec =~ m/print/) {
($print = $rec) =~ s/( \(print\))//;
}
elsif($rec =~ m/mag/) {
($mag = $rec) =~ s/( \(mag\))//;
}
}