Filter::Macro - Make macro modules that are expanded inline


Filter-Macro documentation  | view source Contained in the Filter-Macro distribution.

Index


NAME

Top

Filter::Macro - Make macro modules that are expanded inline

VERSION

Top

This document describes version 0.11 of Filter::Macro, released May 11, 2006.

SYNOPSIS

Top

In MyHandyModules.pm:

    package MyHandyModules;
    use Filter::Macro;
    # lines below will be expanded into caller's code
    use strict;
    use warnings;
    use Switch;
    use IO::All;
    use Quantum::Superpositions;

In your program or module:

    use MyHandyModules; # lines above are expanded here

DESCRIPTION

Top

If many of your programs begin with the same lines, it may make sense to abstract them away into a module, and use that module instead.

Sadly, it does not work that way, because by default, all lexical pragmas, source filters and subroutine imports invoked in MyHandyModules.pm takes effect in that module, not the calling programs.

One way to solve this problem is to use Filter::Include:

    use Filter::Include;
    include MyHandyModules;

However, it would be really nice if MyHandyModules.pm could define the macro-like semantic itself, instead of placing the burden on the caller.

This module lets you do precisely that. All you need to do is to put one line in MyHandyModules.pm, after the package MyHandyModules; line:

    use Filter::Macro;

With this, a program or module that says use Filter::Macro will expand lines below use Filter::Macro into their own code, instead of the default semantic of evaluating them in the MyHandyModules package.

Line numbers in error and warning messages are unaffected by this module; they still point to the correct file name and line numbers.

SEE ALSO

Top

Filter::Include, Filter::Simple::Cached

AUTHORS

Top

Audrey Tang <cpan@audreyt.org>

Based on Damian Conway's concept, covered in his excellent Sufficiently Advanced Technologies talk.

COPYRIGHT (The "MIT" License)

Top


Filter-Macro documentation  | view source Contained in the Filter-Macro distribution.