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 )" 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 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 AUTHOR AND COPYRIGHT Robert 'phaylon' Sedlacek - "". 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.