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

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?

Replies are listed 'Best First'.
Re^5: Using XML Twig to summarize a large file
by mirod (Canon) on Nov 07, 2007 at 17:40 UTC

    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.