++ed by:
1 non-PAUSE user
Author image Gregor N. Purdy, Sr.


psh - Developing for Perl Shell


Developing for the Perl Shell.



The -d option puts psh into "debugging" mode, which prints diagnostic output. Note that you can also enter/leave this debugging mode in a running psh via the $Psh::debugging variable.

Possible values for -d/$Psh::debugging are either 0 to disable it, 1 to enable all debug messages or a string of characters where each character denotes a certain class of debug messages.

s - enables printing of information about the chosen strategy for each command
o - enables printing of "other" debug info - info which has not been further categorized
f - enables printing of the rc files read by psh on startup while it is executed and allows easy tracing of problems in these files
i - enables printing of initialization debug info
e - enables printing of otherwise suppressed error messages
c - enables printing of debug messages for completion


Even though psh aims to be an interactive shell instead of a scripting environment, speed is important. The main concern here is that startup speed of psh, which is primarily determined by two factors:

perl startup and module loading
command processing speed

The startup time on a normal, not to busy, computer should be smaller than one second. To make this possible, keep some simple rules in mind:

prefer require to use whenever possible
delay loading modules until they are really needed
let the applies method of evaluation strategies be as fast as possible


On startup, psh scans the Psh::Builtins:: namespace and will add the names of all found dynamic loadable builtins to %Psh::built_ins.

During evaluation of an input line, psh will first check the %Psh::built_ins variable. If this fails it will try to locate an appropriate built-in function in Psh::Builtins.pm.

A dynamical loadable builtin has to be in a file called Builtinname.pm within the Psh::Builtins:: namespace and has at least one subroutine, called 'bi_builtinname'. Additionally, it may provide a cmpl_builtinname subroutine for a custom completion. Furthermore, a builtin should contain some pod documentation, starting with "=item * " and ending with "=cut". The builtin will be called with 2 arguments, the first one if the rest of the line while the second one is an array to all the words psh discovered.

For a list of the predefined psh builtins, use the "help" command from within psh.


Currently empty due to overhaul of strategies


Copyright (C) 1999-2003 Gregor N. Purdy. All rights reserved. This script is free software. It may be copied or modified according to the same terms as Perl itself.