O - Generic interface to Perl Compiler backends
SYNOPSIS
perl -MO=Backend[,OPTIONS] foo.pl
DESCRIPTION
This is the module that is used as a frontend to the Perl
Compiler.
CONVENTIONS
Most compiler backends use the following conventions:
OPTIONS consists of a comma-separated list of words (no
white-space). The `-v' option usually puts the backend
into verbose mode. The `-ofile' option generates output
to file instead of stdout. The `-D' option followed by
various letters turns on various internal debugging flags.
See the documentation for the desired backend (named
`B::Backend' for the example above) to find out about that
backend.
IMPLEMENTATION
This section is only necessary for those who want to write
a compiler backend module that can be used via this mod
ule.
The command-line mentioned in the SYNOPSIS section corre
sponds to the Perl code
use O ("Backend", OPTIONS);
The `import' function which that calls loads in the appro
priate `B::Backend' module and calls the `compile' func
tion in that package, passing it OPTIONS. That function is
expected to return a sub reference which we'll call CALL
BACK. Next, the "compile-only" flag is switched on (equiv
alent to the command-line option `-c') and a CHECK block
is registered which calls CALLBACK. Thus the main Perl
program mentioned on the command-line is read in, parsed
and compiled into internal syntax tree form. Since the
`-c' flag is set, the program does not start running
(excepting BEGIN blocks of course) but the CALLBACK func
tion registered by the compiler backend is called.
In summary, a compiler backend module should be called
"B::Foo" for some foo and live in the appropriate direc
tory for that name. It should define a function called
`compile'. When the user types
perl -MO=Foo,OPTIONS foo.pl
that function is called and is passed those OPTIONS (split
on commas). It should return a sub ref to the main
and parsed, that returned sub ref is invoked which can
then go ahead and do the compilation, usually by making
use of the `B' module's functionality.
AUTHOR
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'
Man(1) output converted with
man2html