perlsh - one-line perl evaluator with line editing function and variable name completion function
perlsh
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.
You can customize the behavior of perlsh by setting following variables in ~/.perlshrc;
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[\!]$ '.
The secondary prompt string. The default value is `> '.
The name of the file to which the command history is saved. The default value is ~/.perlsh_history.
If not undef, this is the maximum number of commands to remember in the history. The default value is 256.
If true, restrict unsafe constructs. See use strict in perl man page. The default value is 0;
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; }
A initialization file for the GNU Readline Library. Refer its manual for details.
Term::ReadLine::Gnu <http://search.cpan.org/dist/Term-ReadLine-Gnu/>
GNU Readline Library <https://tiswww.cwru.edu/php/chet/readline/rltop.html>
Hiroo Hayashi <hiroo.hayashi@computer.org>