in reply to Calling same named functions from different modules

First of all, all lowercase module names are reserved for perl pragmas. You better name your modules "Interface1" and "Interface2" respectively.
For example, if I call the function terraform which is described in both interfaces and the variable $version is 1, then the interface1.pm version of terraform will be used. If version was 2, interface2.pm would be used.
If I get you right you want something like this:
#file Interface1.pm package Interface1; sub foo { return "I am one!\n"; } 1; #file Interface2.pm package Interface2; sub foo { return "I am two!\n"; } 1; #file script.pl use strict; use warnings; use Interface1; use Interface2; my $interface; $interface = "Interface1"; print $interface->foo(); $interface = "Interface2"; print $interface->foo();
Edit:
or without "class method syntax":
$interface = "Interface1"; eval "print $interface" . "::foo()"; $interface = "Interface2"; eval "print $interface" . "::foo()";
Note that you have to use the concatenation here, because perl would interpret
eval "print $interface::foo()";
as a reference to the variable $foo in package Interface1 and that fails.


holli, /regexed monk/

Replies are listed 'Best First'.
A reply falls below the community's threshold of quality. You may see it by logging in.