Great CPAN Modules
Given the proliferation of SAX filters, I expect this to become a popular system for
XML processing in Perl.
The Perl XML community is interesting aside from any particular module.
Using the Perl XML mailing list as a hub, the community is unusual for its cohesion.
Module ideas are vigorously discussed and the community even shares a Source
Forge project and Web space. It may be that this cohesion has come as a response
to the largely uphill battle facing the Perl XML developers. As Matt Sergeant put it,
Right now our biggest battle seems to be for acceptance within the Perl com
munity as a whole. People completely accept things like the DBI, Tk/Gtk, and LWP
as a vital part of Perl, but are quick to dismiss XML as something they just don't
need and really don't like. We're kind of the bastard child of the Perl community.
But we're winning small battles quite often now.
Parse::RecDescent
No discussion of great CPAN modules would be complete without at least one module
by the Mad Scientist of Perl, Dr. Damian Conway.
25
His Parse::RecDescent module
generates recursive descent parsers from a vaguely yacc like grammar. If you've
never used yacc, the concept is simple: you write a description of the grammar you
want to parse and the parser compiler, yacc, generates an executable parser that
will parse your grammar. Parse::RecDescent extends this concept in a number of
directions that allow the grammar writer far more freedom of expression than yacc.
Parse::RecDescent's interface is superficially object oriented parser objects are
instantiated by passing the grammar to Parse::RecDescent >new(). The returned
parser object has methods to parse input text. However, the real interface to
Parse::RecDescent is in the grammar. The syntax of Parse::RecDescent grammars
is essentially an entirely new programming language designed specifically for
building parsers that interact with Perl. The advantage of this approach over an
entirely object oriented interface are brevity and flexibility.
The success of Parse::RecDescent is largely the usual mix of a common problem
and an efficient solution. However, like many of Damian's modules, it is also an
enjoyable technical challenge for the user. Learning to use Parse::RecDescent is
fun in and of itself; the fact that it helps you solve parsing problems too can seem
almost secondary!
The most common complaint about Parse::RecDescent is that it's too slow and
uses too much memory. My opinion is that for what Parse::RecDescent accomplishes,
it's amazing that it uses as few resources as it does. However, to answer these critiques,
Damian is hard at work on a completely new module, Parse::FastDescent, which may
25. See Dr. Damian Conway's sites at http://www.cs.monash.edu.au/~damian and
http://www.yetanother.org/damian/.
17
173
3
footer
Our partners:
PHP: Hypertext Preprocessor Best Web Hosting
Java Web Hosting
Inexpensive Web Hosting
Jsp Web Hosting
Cheapest Web Hosting
Jsp Hosting
Cheap Hosting
Visionwebhosting.net Business web hosting division of Web
Design Plus. All rights reserved