# CLI options pperl accepts a small set of command-line flags. Most are `perl`-compatible; a handful are pperl-specific (JIT, parallelism, runtime selection, bytecode cache). The authoritative list is whatever `pperl --help` prints; the tables below show those flags, extracted from the interpreter source and rendered here on every documentation build. :::{note} The actual `pperl --help` output on the terminal is always in English — the binary does not localise help strings. Translated documentation shows the same flags with descriptions in the page's language so readers can study what each flag does; flag tokens (`-T`, `--pp`, `--threads=N`, …) are always verbatim. ::: ```{include} ../_generated/pperl-help-table.md ``` ## Environment variables pperl sets several environment variables inside the process it runs, so scripts can introspect the running interpreter: | Variable | Meaning | |--------------------|--------------------------------------------------------------| | `PPERL` | Version string (same as `pperl -v`) | | `PPERL_FEATURES` | Comma-separated list of compiled-in Cargo features | | `PPERL_MODS` | Comma-separated `Name/version` pairs for every native module | | `PPERL_RUNTIMES` | Comma-separated runtimes built in (`p5`, `pp`, or both) | | `PPERL_SHELL` | Shell integration flavor (empty if `shell` feature off) | | `PPERL_STATIC` | `yes` if the binary is musl-statically linked, else `no` | Run `pperl -V` to see all values for the current binary. ## When to use `--pp` The default **p5 runtime** is the full-feature interpreter: every module available, JIT enabled, taint mode functional. `--pp` selects the native-Rust **pp runtime** — faster to start, smaller binary, but with a narrower module set and no JIT. Pick `--pp` for miniperl-style deployments or when the specific module you need is available in it (see the `pp` runtime badge on module pages).