First you can have a look at the simplify, which is compatible with XML::Simple's XMLin, that might help.
Then if simplify is not what you are looking for, the "official" way to pass parameters to a handler is to use a closure. I am not sure why you deem this to be "not very elegant". It is a widely used technique, described for example in Achieving Closure (nearly 9 years ago!).
The code would look like this:
my $data; # a ref to the data structure XML::Twig->new( twig_handlers => { foo => sub { foo( @_, $data); }) ->parsefile( 'my.xml'); sub foo { my( $twig, $foo, $data)= @_; # update the data referenced by $data }
It is even a FAQ: I want to pass additional arguments to XML::Twig handlers, not just the twig and the element, and I'd rather not use global variables. Can I do this?. I will add a paragraph about it in the main docs of the module though.
In reply to Re: Convert XML To Perl Data Structures Using XML::Twig
by mirod
in thread Convert XML To Perl Data Structures Using XML::Twig
by Limbic~Region
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |