in reply to Convert XML To Perl Data Structures Using XML::Twig
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Convert XML To Perl Data Structures Using XML::Twig
by Limbic~Region (Chancellor) on May 25, 2011 at 13:34 UTC | |
by Jenda (Abbot) on May 25, 2011 at 15:18 UTC | |
by mirod (Canon) on May 25, 2011 at 14:09 UTC | |
by Limbic~Region (Chancellor) on May 25, 2011 at 14:43 UTC |