Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
B::Bytecode(3)	      User Contributed Perl Documentation	B::Bytecode(3)

NAME
       B::Bytecode - Perl compiler's bytecode backend

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

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

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

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

KNOWN BUGS
       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.

NOTICE
       There are also undocumented bugs	and options.

AUTHORS
       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

perl v5.32.0			  2018-11-12			B::Bytecode(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | OPTIONS | KNOWN BUGS | NOTICE | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=B::Bytecode&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help