MooseX::DOMってのを作りました。オブジェクトの裏にXMLで定義されたデータが存在していて、それに対して操作するために使う物です。DBIx::ClassとかがObject Relational Mapperなら、これはObject XML MapperでOXMですね。

ともあれ。これを使うと在る程度単純なXMLに関しては簡単にaccessorとかを定義することができます。こんなXMLを操作するためのオブジェクトを作りたいと仮定します:
<foo> <bar>適当な文言</bar> <baz>ほげほげ</baz> </foo>
その場合、こんな感じで定義すると
package Foo; use Moose; use MooseX::DOM; has_dom_root 'foo'; has_dom_child 'bar'; has_dom_child 'baz'; no Moose; no MooseX::DOM;
こういうふうに使えちゃいます
my $foo = Foo->from_file( '/path/to/xml' ); print $foo->bar(); # "適当な文言" print $foo->baz(); # "ほげほげ" $foo->bar( "XYZ" ); print $foo->bar(); # "XYZ"
(個人的には)超便利ッ!