---
name: "perlsh"
section: "1p"
platform: "linux"
package: "perl-term-readline-gnu"
version: "1.47-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/perlsh"
---

# perlsh(1p)

one-line perl evaluator with line editing function and variable name completion function

## NAME

perlsh - one-line perl evaluator with line editing function and\
          variable name completion function

## SYNOPSIS

```
  perlsh
```

## DESCRIPTION

This program reads input a line, and evaluates it by perl interpreter, and prints the result.  If the result is a list value then each value of the list is printed line by line.  This program can be used as a very strong calculator which has whole perl functions.

This is a sample program Term::ReadLine::Gnu module.  When you input a line, the line editing function of GNU Readline Library is available. Perl symbol name completion function is also available.

Before invoking, this program reads *~/.perlshrc* and evaluates the content of the file.

When this program is terminated, the content of the history buffer is saved in a file *~/.perlsh\_history*, and it is read at next invoking.

## VARIABLES

You can customize the behavior of `"perlsh"` by setting following variables in *~/.perlshrc*;

- $PerlSh::PS1

  The primary prompt string.  The following backslash-escaped special characters can be used.

  ```
          \h: host name
          \u: user name
          \w: package name
          \!: history number
  ```

  The default value is \``"\w[\!]$ "`'.

- $PerlSh::PS2

  The secondary prompt string.  The default value is \``"> "`'.

- $PerlSh::HISTFILE

  The name of the file to which the command history is saved.  The default value is `"~/.perlsh_history"`.

- $PerlSh::HISTSIZE

  If not `"undef"`, this is the maximum number of commands to remember in the history.  The default value is 256.

- $PerlSh::STRICT

  If true, restrict unsafe constructs.  See `"use strict"` in perl man page.  The default value is 0;

## FILES

- *~/.perlshrc*

  This file is eval-ed at initialization.  If a subroutine `"afterinit"` is defined in this file, it will be eval-ed after initialization. Here is a sample.

  ```
          # -*- mode: perl -*-
          # decimal to hexa
          sub h { map { sprintf("0x%x", $_ ) } @_;}
          sub tk {
              $t->tkRunning(1);
              use Tk;
              $mw = MainWindow->new();
          }
          # for debugging Term::ReadLine::Gnu
          sub afterinit {
              *t = \$PerlSh::term;
              *a = \$PerlSh::attribs;
          }
  ```

- *~/.perlsh\_history*

  - *~/.inputrc*

  A initialization file for the GNU Readline Library.  Refer its manual for details.

## SEE ALSO

Term::ReadLine::Gnu \<http://search.cpan.org/dist/Term-ReadLine-Gnu/\>

GNU Readline Library \<https://tiswww.cwru.edu/php/chet/readline/rltop.html\>

## AUTHOR

Hiroo Hayashi \<hiroo.hayashi@computer.org\>
