Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Sub::Defer(3)	      User Contributed Perl Documentation	 Sub::Defer(3)

NAME
       Sub::Defer - Defer generation of	subroutines until they are first
       called

SYNOPSIS
	use Sub::Defer;

	my $deferred = defer_sub 'Logger::time_since_first_log'	=> sub {
	   my $t = time;
	   sub { time -	$t };
	};

	 Logger->time_since_first_log; # returns 0 and replaces	itself
	 Logger->time_since_first_log; # returns time -	$t

DESCRIPTION
       These subroutines provide the user with a convenient way	to defer
       creation	of subroutines and methods until they are first	called.

SUBROUTINES
   defer_sub
	my $coderef = defer_sub	$name => sub { ... };

       This subroutine returns a coderef that encapsulates the provided	sub -
       when it is first	called,	the provided sub is called and is -itself-
       expected	to return a subroutine which will be goto'ed to	on subsequent
       calls.

       If a name is provided, this also	installs the sub as that name -	and
       when the	subroutine is undeferred will re-install the final version for
       speed.

       Exported	by default.

   undefer_sub
	my $coderef = undefer_sub \&Foo::name;

       If the passed coderef has been deferred this will "undefer" it.	If the
       passed coderef has not been deferred, this will just return it.

       If this is confusing, take a look at the	example	in the "SYNOPSIS".

       Exported	by default.

   undefer_all
	undefer_all();

       This will undefer all deferred subs in one go.  This can	be very	useful
       in a forking environment	where child processes would each have to
       undefer the same	subs.  By calling this just before you start forking
       children	you can	undefer	all currently deferred subs in the parent so
       that the	children do not	have to	do it.	Note this may bake the
       behavior	of some	subs that were intended	to calculate their behavior
       later, so it shouldn't be used midway through a module load or class
       definition.

       Exported	by default.

   undefer_package
	 undefer_package($package);

       This undefers all deferred subs in a package.

       Not exported by default.

SUPPORT
       See Sub::Quote for support and contact information.

AUTHORS
       See Sub::Quote for authors.

COPYRIGHT AND LICENSE
       See Sub::Quote for the copyright	and license.

perl v5.24.1			  2017-06-07			 Sub::Defer(3)

NAME | SYNOPSIS | DESCRIPTION | SUBROUTINES | SUPPORT | AUTHORS | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Sub::Defer&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help