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

  man pages->IRIX man pages -> perl5/Devel::SelfStubber (3)              
Title
Content
Arch
Section
 

Contents


Devel::SelfStubber(3)					 Devel::SelfStubber(3)


NAME    [Toc]    [Back]

     Devel::SelfStubber	- generate stubs for a SelfLoading module

SYNOPSIS    [Toc]    [Back]

     To	generate just the stubs:

	 use Devel::SelfStubber;
	 Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');

     or	to generate the	whole module with stubs	inserted correctly

	 use Devel::SelfStubber;
	 $Devel::SelfStubber::JUST_STUBS=0;
	 Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');

     MODULENAME	is the Perl module name, e.g. Devel::SelfStubber, NOT
     'Devel/SelfStubber' or 'Devel/SelfStubber.pm'.

     MY_LIB_DIR	defaults to '.'	if not present.

DESCRIPTION    [Toc]    [Back]

     Devel::SelfStubber	prints the stubs you need to put in the	module before
     the __DATA__ token	(or you	can get	it to print the	entire module with
     stubs correctly placed). The stubs	ensure that if a method	is called, it
     will get loaded. They are needed specifically for inherited autoloaded
     methods.

     This is best explained using the following	example:

     Assume four classes, A,B,C	& D.

     A is the root class, B is a subclass of A,	C is a subclass	of B, and D is
     another subclass of A.

			     A
			    / \
			   B   D
			  /
			 C

     If	D calls	an autoloaded method 'foo' which is defined in class A,	then
     the method	is loaded into class A,	then executed. If C then calls method
     'foo', and	that method was	reimplemented in class B, but set to be
     autoloaded, then the lookup mechanism never gets to the AUTOLOAD
     mechanism in B because it first finds the method already loaded in	A, and
     so	erroneously uses that. If the method foo had been stubbed in B,	then
     the lookup	mechanism would	have found the stub, and correctly loaded and
     used the sub from B.

     So, for classes and subclasses to have inheritance	correctly work with
     autoloading, you need to ensure stubs are loaded.




									Page 1






Devel::SelfStubber(3)					 Devel::SelfStubber(3)



     The SelfLoader can	load stubs automatically at module initialization with
     the statement 'SelfLoader->load_stubs()';,	but you	may wish to avoid
     having the	stub loading overhead associated with your initialization
     (though note that the SelfLoader::load_stubs method will be called	sooner
     or	later -	at latest when the first sub is	being autoloaded). In this
     case, you can put the sub stubs before the	__DATA__ token.	This can be
     done manually, but	this module allows automatic generation	of the stubs.

     By	default	it just	prints the stubs, but you can set the global
     $Devel::SelfStubber::JUST_STUBS to	0 and it will print out	the entire
     module with the stubs positioned correctly.

     At	the very least,	this is	useful to see what the SelfLoader thinks are
     stubs - in	order to ensure	future versions	of the SelfStubber remain in
     step with the SelfLoader, the SelfStubber actually	uses the SelfLoader to
     determine which stubs are needed.


									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
pthread_stubs HP-UX list of pthread calls for which the stubs are provided in the C library
Term::ReadLine IRIX Perl interface to various readline packages. If no real package is found, substitutes stubs instead of basic f
ldr_inq_region Tru64 Return module information about a region in a loaded module
pam_self FreeBSD Self PAM module
pam_rootok FreeBSD RootOK PAM module
pam_securetty FreeBSD SecureTTY PAM module
pam_rhosts FreeBSD Rhosts PAM module
pam_nologin FreeBSD NoLogin PAM module
pam_set_data FreeBSD set module information
kbdpipe IRIX use the kbd module in a pipeline
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service