in reply to dynamic perl calls
It sounds like you want to do polymorphism. This is a quick example that sounds like a starting point for you.
child1.pm
package child1; sub polyexample { my $class = shift; my $param1 = shift; my $param2 = shift; print "polyexample (child1) called with [$param1] and [$param2]\n" +; } 1;
child2.pm
package child2; sub polyexample { my $class = shift; my $param1 = shift; my $param2 = shift; print "polyexample (child2) called with [$param1] and [$param2]\n" +; } 1;
main.pl
use strict; use Carp; my $class = shift; my $method = shift; my $param1 = shift; my $param2 = shift; eval("use $class"); if($@) { croak("Couldn't find package $class ($@) "); } eval($class->$method($param1, $param2)); if($@) { croak ("couldn't invoke method #method on $class with params ($@)" +) }
Finally, here are the two example invocations:
~/src/perl/poly$ perl main.pl child1 polyexample 1 2 polyexample (child1) called with [1] and [2]
~/src/perl/poly$ perl main.pl child2 polyexample 1 2 polyexample (child2) called with [1] and [2]
and an example failure
~/src/perl/poly$ perl main.pl child5 polyexample 1 2 Couldn't find package child5 (Can't locate child5.pm in @INC (@INC con +tains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.1 +0.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/per +l/5.10 /usr/local/lib/site_perl .) at (eval 1) line 2. BEGIN failed--compilation aborted at (eval 1) line 2.
And many wonderful permutations of this exist.
Still searching; Still seeking.
In Section
Seekers of Perl Wisdom