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;'; });