Filter::EOF.3pm

Langue: en

Autres versions - même langue

Version: 2007-08-02 (ubuntu - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Filter::EOF - Run a callback after a file has been compiled

VERSION

0.04

SYNOPSIS

   package MyPackage;
   use warnings;
   use strict;
 
   use Filter::EOF;
 
   sub import {
       my ($class, @args) = @_;
       my $caller = scalar caller;
 
       # set the COMPILE_TIME package var to a false value
       # when the file was compiled
       Filter::EOF->on_eof_call(sub {
           no strict 'refs';
           ${ $caller . '::COMPILE_TIME' } = 0;
       });
 
       # set the COMPILE_TIME package var to a true value when
       # we start compiling it.
       {   no strict 'refs';
           ${ $caller . '::COMPILE_TIME' } = 1;
       }
   }
 
   1;
   ...
 
   package MyUsingPackage;
   use warnings;
   use strict;
 
   our $COMPILE_TIME;
   use MyPackage;
 
   # prints 'yes'
   BEGIN { print +( $COMPILE_TIME ? 'yes' : 'no' ), "\n" }
 
   # prints 'no'
   print +( $COMPILE_TIME ? 'yes' : 'no' ), "\n";
 
   1;
 
 

DESCRIPTION

This module utilises Perl's source filters to provide you with a mechanism to run some code after a file using your module has been processed.

METHODS


"import( @functions )"


import( @functions )

Currently, only a function equivalent of the "on_eof_call" method is provided for export.

   use Filter::EOF qw( on_eof_call );
 
   sub import {
       my ($class) = @_;
       ...
       on_eof_call { ... };
   }
   ...
 
 

"on_eof_call( $code_ref )"


on_eof_call( $code_ref )

Call this method in your own "import" method to register a code reference that should be called when the file "use"ing yours was compiled.

The code reference will get a scalar reference as first argument to an empty string. if you change this string to something else, it will be appended at the end of the source.

   # call C<some_function()> after runtime.
   Filter->on_eof_call(sub { 
       my $append = shift;
       $$append .= '; some_function(); 1;';
   });
 
 

EXPORTS


on_eof_call

You can optionally import the "on_eof_call" function into your namespace.

EXAMPLES

You can find the example mentioned in ``SYNOPSIS'' in the distribution directory "examples/synopsis/".

SEE ALSO

Filter::Call::Util, ``Exporting without using Exporter's import method'' in Exporter Robert 'phaylon' Sedlacek - "<rs@474.at>". Many thanks to Matt S Trout for the idea and inspirations on this module.

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as perl itself.