#### test.pl #!/usr/bin/perl -w use strict; use plugins; my $P = new plugins(); $P->loadplugins(); sub registerplugin { $P->registerplugin(@_); } #### end #### plugins.pm package plugins; use wrap; sub new { my $class = shift; my $self = {}; bless($self, $class); return $self; } sub loadplugins { my $self=shift; wrap::requirer('foo.pl'); } sub registerplugin { my $self = shift; my $arg = shift; print $arg; } 1; #### end #### wrap.pm package wrap; sub requirer { require 'foo.pl'; } sub registerplugin { main::registerplugin(@_); } 1; #### end #### foo.pl registerplugin("hi"); #### end