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

Currently, only a function equivalent of the \*(C`on_eof_call\*(C' method is provided for export.

use Filter::EOF qw( on_eof_call );

sub import { my ($class) = @_; ... on_eof_call { ... }; } ... Call this method in your own \*(C`import\*(C' method to register a code reference that should be called when the file \*(C`use\*(C'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

\$1

You can optionally import the \*(C`on_eof_call\*(C' function into your namespace.

EXAMPLES

You can find the example mentioned in \*(L"\s-1SYNOPSIS\s0\*(R" in the distribution directory \*(C`examples/synopsis/\*(C'.

RELATED TO Filter::EOF…

Filter::Call::Util, \*(L"Exporting without using Exporter's import method\*(R" in Exporter

AUTHOR AND COPYRIGHT

Robert 'phaylon' Sedlacek - \*(C`<[email protected]>\*(C'. 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.