NAME
macro - An implementation of macro processor
VERSION
This document describes macro version 0.01
SYNOPSIS
use macro add => sub{ $_[0] + $_[1] };
say add(1, 3); # it's replaced into 'say do{ (1) + (3) };'
use macro sum => sub{ my $sum=0; for my $v(@_){ $sum+=$v }; $sum };
say sum(1, 2, 3); # => 6
use macro my_if => sub{ $_[0] ? $_[1] : $_[2] };
my_if( 0, print('true'), print('false') ); # only 'false' is printed
# or compile only
$ perl -c Module.pm # make Module.pmc
DESCRIPTION
The "macro" pragma provides a sort of inline functions, which is like C
pre-processor.
The macros are very fast (about 200% faster than subroutines), but they
have some limitations that C pre-processor's macros have, e.g. they
cannot call "return()" expectedly, although they seem anonymous
subroutines.
Try "PERL_MACRO_DEBUG=2" if you want to know how this module works.
METHOD
macro->backend()
Returns the backend module, "macro::filter" or "macro::compiler".
macro->new()
Returns an instance of macro processor, $macro.
$macro->defmacro(name => sub{ ... });
Defines macros into *$macro*.
$macro->process($source)
Processes Perl source code *$source*, and returns processed source code.
"new()", "defmacro()" and "process()" are provided for backend modules.
CONFIGURATION AND ENVIRONMENT
PERL_MACRO_DEBUG=value
Debug mode.
if it's == 0, "macro::compiler" is used as the backend.
if it's >= 1, "macro::filter" is used as the backend.
If it's >= 2, all macro expansions are reported to "STDERR".
INSTALL
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
* Perl 5.8.1 or later.
* "PPI" - Perl parser.
* "Filter::Util::Call" - Source filter utility.
BUGS AND LIMITATIONS
No bugs have been reported.
Please report any bugs or feature requests to "bug-macro@rt.cpan.org/",
or through the web interface at .
SEE ALSO
macro::JA.
macro::filter - source filter backend.
macro::compiler - compiler backend.
AUTHOR
Goro Fuji .
LICENSE AND COPYRIGHT
Copyright (c) 2008, Goro Fuji . Some rights reserved.
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.