---
name: "B::Bytecode"
section: "3perl"
platform: "linux"
package: "perl-doc"
version: "5.8.8-7etch6"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/B::Bytecode"
---

# B::Bytecode(3perl)

Perl compiler's bytecode backend

## NAME

B::Bytecode - Perl compiler's bytecode backend

## SYNOPSIS

**perl -MO=Bytecode**\[**,-H**\]\[**,-o***script.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.

## EXAMPLE

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

## OPTIONS

- **-b**

  Save all the BEGIN blocks. Normally only BEGIN blocks that `"require"` other files (ex. `"use Foo;"`) are saved.

- **-H**

  prepend a `"use ByteLoader VERSION;"` line to the produced bytecode.

- **-k**

  keep the syntax tree - it is stripped by default.

- **-o***outfile*

  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.

## KNOWN BUGS

- •

  `"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.

## NOTICE

There are also undocumented bugs and options.

THIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK.

## AUTHORS

Originally written by Malcolm Beattie \<mbeattie@sable.ox.ac.uk\> and modified by Benjamin Stuhl \<sho\_pi@hotmail.com\>.

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