in reply to Re^2: Using XML Twig to summarize a large file
in thread Using XML Twig to summarize a large file

A handler is called when the associated expression triggers it, so what you wrote triggers a handler on every populate element. I don't see any element by that name in the XML, so the handler will not be called. Is there anything wrong with the pyx code I posted below? Or any specific reason why you would want to use XML::Twig despite it not being the most suited for the task?

  • Comment on Re^3: Using XML Twig to summarize a large file

Replies are listed 'Best First'.
Re^4: Using XML Twig to summarize a large file
by Mr.Churka (Sexton) on Nov 07, 2007 at 17:03 UTC
    Thanks! The code you posted gave me the following error.
    String found where operator expected at line 2 near "pyx 'bigXML.xml | + perl -n -e'" Scalar found where operator expected at line 2 near "BigXML.xml | perl + -n -e '$nb" (missing operator before $nb?)
    I'm sort of learning Perl crash course style and wanted to understand why what I wrote bombed so dismally. Twig is mildly complicated and it seemed like getting a handle on a complex module might be a good way (though challenging) to jump right in. I got handed a Camel book and told "Go learn this. We've got faith in you." Exciting and intimidating at the same time. I'll take any help I can get. Is this a bad way to go about learning Perl?

      What you wrote bombed because frankly I don't think you have understood much of the docs for XML::Twig (which is probably understandable if you don't know any Perl). There are much easier to start with Perl than starting with a complex module, especially when using it for something it's not really made for.

      As for the problem with pyx it seems that a cut'n paste did not quite work as planned, so here is an hopefully better version:

      pyx bigXML.xml | perl -n -e '$nb{$1}++ if( m/\A\((.*)\n/); END { map { print "$_ used $nb{$_} time(s)\n";} sort keys %nb;}'

      This works on *nix, windows would probably require different quotes. If you want to understand what's going on you can use perldoc XML::PYX, for info about PYX, perldoc perlrun to understand the -n and -e options, perldoc -f map and perldoc -f sort.