PerlPP
Perl preprocessor - embed Perl source in any file
...PerlPP runs in two passes: it generates a Perl script from your input, and then it runs the generated script. If you see error at (eval ##) (for some number ##), it means there was an error in the generated script. The -D switch defines elements of %D. If you do not specify a value, the value true (a constant in the generated script) will be used. The following commands work mostly analogously to their C preprocessor counterparts. but $fn can be determined programmatically. Note that defines set with -D or -s do not take effect until after the script has been generated, which is after the macro code runs.