in reply to Strange start_tag_handlers behaviour using twig module

Hi basalto,

Not sure if this will help you or not, but I think it might have to do with the use of $twig->setStartTagHandlers. I used Data::Dumper to look at what your SubNetwork routine was receiving as arguments. The first time, it received a XML::Twig for $twig, a string scalar for $tag, and a hash for %att. Then the sub goes about and changes the start tag handlers using setStartTagHandler or setStartTagHandlers, depending on which branch of the if statement is followed. The second time SubNetwork is called, it receives only a XML::Twig and a XML::Twig::Elt. The question you're asking is "why" and unfortunately I have no idea, but perhaps my post will help spark something for you.

Regards,

Bald Man Tom

Update: Sorry, I should have mentioned before that when I was playing around with your script, I commmented out the if statement in the SubNetwork sub so that the start tag handlers wouldn't be redefined, and the second time SubNetwork was called, it received the "expected" information.

  • Comment on Re: Strange start_tag_handlers behaviour using twig module

Replies are listed 'Best First'.
Re^2: Strange start_tag_handlers behaviour using twig module
by basalto (Beadle) on Apr 11, 2008 at 00:19 UTC
    Hi Bald Man Tom, Is exactly that strange behaviour that I can't explain. If I didn't change start_tag_handler during the processing time everything goes fine, but if i add some new element in the hash, it seems start_tag_handler is raised as a twig_handler with only two arguments (XML::Twig and XML::Twig::Elt).

    Regards,

    Basalto