Hi everyone,
Because of the very interesting article by Randall in a recent SysAdmin, I've start
using the very nice Parse::RecDescent module worte by Damian Conway. This thing rocks.
See http://www.stonehenge.com/merlyn/UnixReview/col40.html for the article.
I created a big grammar and have a series of files to parse. Most file types are alike
but they are different enough to require there own starting rules. When a $parser is
created, the rules becomes method of the object $parser.
When parsing, I need to call the right rule so I do something like this:
open THEFILE, "$file" or die "Can't open $file: $!";
if($ruletype eq 'EQUIPMENT')
{
defined $parser->lst_equipment(join('',<THEFILE>)))
or print "!!! Unable to parse.\n";
}
elsif($ruletype eq 'PCC')
{
defined $parser->pcc(join('',<THEFILE>)))
or print "!!! Unable to parse.\n";
}
elsif ...
close THEFILE;
I have a hash that has the rule information. It looks like this:
my %filetyperules = (
PCC => 'pcc',
EQUIPMENT => 'lst_equipment',
...
);
Is there a way to use $filetyperules{$ruletype} directly to call the $parser->method
whitout having to do all these if{ }elsif{ }elsif{ }...
Thanks in advance for any clues on this.
-----------------------------------------------------------
�ric Beaudoin <mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]