Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  B::BYTECODE (3)

.ds Aq ’


B::Bytecode - Perl compiler’s bytecode backend



<B>perl -MO=BytecodeB>[<B>,-HB>][<B>,-oB>script.plc]


Compiles a Perl script into a bytecode format that could be loaded later by the ByteLoader module and executed as a regular Perl script. This saves time for the optree parsing and compilation and space for the sourcecode in memory.


    $ perl -MO=Bytecode,-H,-ohi -e print "hi!\n"
    $ perl hi


<B>-HB> Prepend a use ByteLoader VERSION; line to the produced bytecode. This way you will not need to add -MByteLoader to your perl command-line.

Beware: This option does not yet work with 5.18 and higher. You need to use -MByteLoader still.

<B>-iB> includeall Include all used packages and its symbols. Does no run-time require from BEGIN blocks (use package).

This creates bigger and more independent code, but is more error prone and does not support pre-compiled .pmc modules.

It is highly recommended to use -i together with -b safebegin.

<B>-bB> savebegin Save all the BEGIN blocks.

Normally only BEGIN blocks that require other files (ex. use Foo;) or push|unshift to @INC are saved.

<B>-kB> Keep the syntax tree - it is stripped by default.
<B>-oB>outfile Put the bytecode in <outfile> instead of dumping it to STDOUT.
<B>-sB> Scan the script for # line .. directives and for <goto LABEL> expressions. When gotos are found keep the syntax tree.
<B>-SB> Output assembler source rather than piping it through the assembler and outputting bytecode. Without -q the assembler source is commented.
<B>-mB> Compile to a .pmc module rather than to a single standalone .plc program.

Currently this just means that the bytecodes for initialising main_start, main_root, main_cv and curpad are omitted.

<B>-uB>package use package. Might be needed of the package is not automatically detected.
<B>-FB>file Include file. If not -i define all symbols in the given included source file. -i would all included files, -F only a certain file - full path needed.
<B>-qB> Be quiet.
<B>-vB> Be verbose.
<B>-TIB> Restore full @INC for running within the CORE testsuite.
<B>-TFB> cop file Set the COP file - for running within the CORE testsuite.
<B>-DoB> OPs, prints each OP as it’s processed
<B>-DMB> Debugging flag for more verbose STDERR output.

<B>MB> for Magic and Matches.

<B>-DGB> Debug GV’s
<B>-DAB> Set developer <B>AB>ssertions, to help find possible obj-indices out of range.


o 5.10 threaded fails with setting the wrong MATCH op_pmflags 5.10 non-threaded fails calling anoncode, ...
o BEGIN { goto A: while 1; A: } won’t even compile.
o ?...? and reset do not work as expected.
o variables in (?{ ... }) constructs are not properly scoped.
o Scripts that use source filters will fail miserably.
o Special GV’s fail.


There are also undocumented bugs and options.


Originally written by Malcolm Beattie 1996 and modified by Benjamin Stuhl <>.

Rewritten by Enache Adrian <>, 2003 a.d.

Enhanced by Reini Urban <>, 2008-2012

Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 B::BYTECODE (3) 2016-04-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.