Codebase list libfilter-eof-perl / HEAD
HEAD

Tree @HEAD (Download .tar.gz)

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<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

AUTHOR AND COPYRIGHT
    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.