---
name: "Filter::EOF"
section: "3pm"
platform: "linux"
package: "libfilter-eof-perl"
version: "0.04-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Filter::EOF"
---

# Filter::EOF(3pm)

Run a callback after a file has been compiled

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