Recipe 12.22 Example: Module Template

Following is the skeleton of a module. If you want to write a module of your own, you can copy this and customize it.

package Some::Module;  # must live in Some/Module.pm use strict; require Exporter; # set the version for version checking our $VERSION     = 0.01; our @ISA         = qw(Exporter); our @EXPORT      = qw(&func1 &func2 &func4); our %EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ], # your exported package globals go here, # as well as any optionally exported functions our @EXPORT_OK   = qw($Var1 %Hashit &func3); use vars qw($Var1 %Hashit); # non-exported package globals go here our(@more, $stuff); # initialize package globals, first exported ones $Var1   = ""; %Hashit = ( ); # then the others (which are still accessible as $Some::Module::stuff) $stuff  = ""; @more   = ( ); # all file-scoped lexicals must be created before # the functions below that use them. # file-private lexicals go here my $priv_var    = ""; my %secret_hash = ( ); # here's a file-private function as a closure, # callable as &$priv_func. my $priv_func = sub {     # stuff goes here. }; # make all your functions, whether exported or not; # remember to put something interesting in the {  } stubs sub func1      { .... }    # no prototype sub func2( )    { .... }    # proto'd void sub func3($$)  { .... }    # proto'd to 2 scalars # this one isn't auto-exported, but could be called! sub func4(\%)  { .... }    # proto'd to 1 hash ref END { }       # module cleanup code here (global destructor) 1;


Perl Cookbook
Perl Cookbook, Second Edition
ISBN: 0596003137
EAN: 2147483647
Year: 2003
Pages: 501

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net