in reply to Re: Re: strict refs on / off process time
in thread strict refs on / off process time

Hi shemp,

What you could do is just create your parser functions as normal named functions, but also create a reference to each of them. You can then store those references in an array and use an index into that array to find the correct function to execute. Untested example (pseudo)code for this could be:

use strict; my @parsers; push @parsers, \&parser1; # Create a reference to parser 1 and push it + onto the array push @parsers, \&parser2; # Ditto for parser 2 ... sub parser1 { parse..parse..parse }; sub parser2 { parse_somewhat_differently };
When a record from a source, say source 2 comes in, you access it's parser with:
$parsers[$source_id]->( arguments ); # $source_id contains the source, + e.g. 2
I have a feeling that you can even automate the process of creating the @parsers array by playing symbol table games, but I'm not awake enough any more to take a decent shot at it. Perhaps some more experienced (and awake) monk will step in here.

CU
Robartes-