[Pdx-pm] how to specify an interface in a .pm file
Chris Dawson
cdawson at webiphany.com
Mon Jan 19 01:07:52 CST 2004
Hi there,
I have a software package to which I want to allow third-party library
upgrades. By this I mean I want to allow people to upload .pm files
which implement a certain API interface and then use those .pm files in
my software package. I think I am clear about how I dynamically load
the .pm files, by using an eval once I have retrieved the filename.
But, I am unclear how I would query a .pm file to determine what
subroutines are defined, without calling into them. I am comfortable
requiring that people provide me with function prototypes, although
definitely unclear as to how exactly to specify these in the module, and
even if this gets me closer to a solution. Does anyone have any
suggestions, preferably with sample code?
If it wasn't clear, here is some code:
(My API requires these two functions: get_description and process)
(Plugin.pm)
package Plugin;
sub process( $$ );
sub process { 1; }
sub get_description( $ );
sub get_description { 1; }
How do I query Plugin.pm and determine if it has both process and
get_description? Also, is there a way to not specify "package Plugin;"
at the top of every file, since in this case it is somewhat redundant as
the filename is the same. perl doesn't appear to recognize it as a
package unless you do this.
I guess I could use grep, but I would like to understand better how all
of this works in perl, since it is clear how I would do this using
function pointers and DLLs with c/c++.
Thanks,
Chris
More information about the Pdx-pm-list
mailing list