Filter::EOF3pm
Run a callback after a file has been compiled
Usage
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 compiledFilter::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;
Version
0.04
Overview
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 )"
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 )"
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/".
Author and copyright
Robert 'phaylon' Sedlacek - "<[email protected]>". Many thanks to Matt S Trout for the idea and inspirations on this module.
Releases
9 releases since Debian 5.0 (Lenny); the text changed 2 times.