require Module1; require Module2; Module1::foo(); Module2::foo(); #### my $mod = some_condition() ? 'Module1' : 'Module2'; eval "require $mod; ${mod}::foo()"; #### use strict; use warnings; my $mod = shift; require "$mod.pm"; eval "$mod->import(); 1" or die; # modules all export 'foo' by default # eval "$mod->import( 'foo' ); 1" or die; foo();