#Test.pm package Test; use strict; use Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); $VERSION = 1.00; @ISA = qw(Exporter); @EXPORT = (); @EXPORT_OK = qw(func1 func2); %EXPORT_TAGS = ( DEFAULT => [qw(&func1)], Both => [qw(&func1 &func2)]); sub func1 { return reverse @_ } sub func2 { return map{ uc }@_ } 1; #### #Test.pl use strict; use warnings; # you may need to set @INC here (see below) my @list = qw (J u s t ~ A n o t h e r ~ P e r l ~ H a c k e r !); # case 1 use Test; print func1(@list),"\n"; print func2(@list),"\n"; # case 2 use Test qw(&func1); print func1(@list),"\n"; print Test::func2(@list),"\n"; # case 3 use Test qw(:DEFAULT); print func1(@list),"\n"; print func2(@list),"\n"; # case 4 use Test qw(:Both); print func1(@list),"\n"; print func2(@list),"\n";