use A; test1(); sub test1 { ... } print 'i'; use B; print 'j'; sub test2 { ... } BEGIN { print 'begin'; } #### require A; A->import() if A->UNIVERSAL::can('import'); *test1 = sub { ... }; require B; B->import() if B->UNIVERSAL::can('import'); *test2 = sub { ... }; print 'begin'; test1(); print 'i'; print 'j';