GSP
Quick Navigator

Search Site

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

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
B::Bytecode(3) User Contributed Perl Documentation B::Bytecode(3)

B::Bytecode - Perl compiler's bytecode backend

perl -MO=Bytecode[,-H][,-oscript.plc] script.pl

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
    hi!

-H
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.

-i 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 savebegin
Save all the BEGIN blocks.

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

-k
Keep the syntax tree - it is stripped by default.
-ooutfile
Put the bytecode in <outfile> instead of dumping it to STDOUT.
-s
Scan the script for "# line .." directives and for <goto LABEL> expressions. When gotos are found keep the syntax tree.
-S
Output assembler source rather than piping it through the assembler and outputting bytecode. Without "-q" the assembler source is commented.
-m
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.

-upackage
"use package." Might be needed of the package is not automatically detected.
-Ffile
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.
-q
Be quiet.
-v
Be verbose.
-TI
Restore full @INC for running within the CORE testsuite.
-TF cop file
Set the COP file - for running within the CORE testsuite.
-Do
OPs, prints each OP as it's processed
-DM
Debugging flag for more verbose STDERR output.

M for Magic and Matches.

-DG
Debug GV's
-DA
Set developer Assertions, to help find possible obj-indices out of range.

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

There are also undocumented bugs and options.

Originally written by Malcolm Beattie 1996 and modified by Benjamin Stuhl <sho_pi@hotmail.com>.

Rewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d.

Enhanced by Reini Urban <rurban@cpan.org>, 2008-2012

2018-11-12 perl v5.32.1

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

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