*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> perl5/autouse (3)              
Title
Content
Arch
Section
 

Contents


autouse(3)							    autouse(3)


NAME    [Toc]    [Back]

     autouse - postpone	load of	modules	until a	function is used

SYNOPSIS    [Toc]    [Back]

       use autouse 'Carp' => qw(carp croak);
       carp "this carp was predeclared and autoused ";

DESCRIPTION    [Toc]    [Back]

     If	the module Module is already loaded, then the declaration

       use autouse 'Module' => qw(func1	func2($;$) Module::func3);

     is	equivalent to

       use Module qw(func1 func2);

     if	Module defines func2() with prototype ($;$), and func1() and func3()
     have no prototypes.  (At least if Module uses Exporter's import,
     otherwise it is a fatal error.)

     If	the module Module is not loaded	yet, then the above declaration
     declares functions	func1()	and func2() in the current package, and
     declares a	function Module::func3().  When	these functions	are called,
     they load the package Module if needed, and substitute themselves with
     the correct definitions.

WARNING    [Toc]    [Back]

     Using autouse will	move important steps of	your program's execution from
     compile time to runtime.  This can

     o	  Break	the execution of your program if the module you	autoused has
	  some initialization which it expects to be done early.

     o	  hide bugs in your code since important checks	(like correctness of
	  prototypes) is moved from compile time to runtime.  In particular,
	  if the prototype you specified on autouse line is wrong, you will
	  not find it out until	the corresponding function is executed.	 This
	  will be very unfortunate for functions which are not always called
	  (note	that for such functions	autouseing gives biggest win, for a
	  workaround see below).

     To	alleviate the second problem (partially) it is advised to write	your
     scripts like this:

       use Module;
       use autouse Module => qw(carp($)	croak(&$));
       carp "this carp was predeclared and autoused ";

     The first line ensures that the errors in your argument specification are
     found early.  When	you ship your application you should comment out the
     first line, since it makes	the second one useless.



									Page 1






autouse(3)							    autouse(3)


BUGS    [Toc]    [Back]

     If	Module::func3()	is autoused, and the module is loaded between the
     autouse directive and a call to Module::func3(), warnings about
     redefinition would	appear if warnings are enabled.

     If	Module::func3()	is autoused, warnings are disabled when	loading	the
     module via	autoused functions.

AUTHOR    [Toc]    [Back]

     Ilya Zakharevich ([email protected])

SEE ALSO    [Toc]    [Back]

      
      
     perl(1).


									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
IO IRIX load various IO modules
modload HP-UX load kernel modules on demand
ml IRIX load dynamic kernel modules
modules Linux kernel modules to load at boot time
perlmodinstall OpenBSD Installing CPAN Modules
dh_installmodules Linux register modules with modutils
rmmod Linux unload loadable modules
lsmod Linux list loaded modules.
strmod_add Tru64 Add STREAMS modules and drivers
pam FreeBSD Pluggable Authentication Modules Library
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service