Perl::Shell - A Python-style "command line interpreter" for Perl


Perl-Shell documentation  | view source Contained in the Perl-Shell distribution.

Index


NAME

Top

Perl::Shell - A Python-style "command line interpreter" for Perl

SYNOPSIS

Top

  C:\Document and Settings\adamk> perlthon
  Perl 5.10.1 (Sat Oct 17 22:14:49 2009) [Win32 strawberryperl 5.10.1.0 #1 33 i386]
  Type "help;", "copyright;", or "license;" for more information.

  >>> print "Hello World!\n";
  Hello World!

  >>> 

DESCRIPTION

Top

THIS MODULE IS HIGHLY EXPERIMENTAL AND SUBJECT TO CHANGE.

YOU HAVE BEEN WARNED

This module provides a lookalike implementation of a "command line interpreter" for Perl, in the style of the Python equivalent.

This is part an attempt to make Perl more approachable (both in general and specifically for Python programmers), partly an exercise to force myself to explore Python's usability aspects, partly a way to provide Strawberry Perl with a "Perl (command line)" start menu entry, and partly as fodder for a funny lightning talk.

On the command line, you can start the shell with "perlthon".

Features

Multi-line statements are supported correctly by using PPI to detect statement boundaries (something it can do very reliably).

  >>> print
  ... "Hello World!\n"
  ... ;
  Hello World!

  >>> 

Lexical variables are supported correctly across multiple statements.

  >>> my $foo = "Hello World!\n";

  >>> print $foo;
  Hello World!

  >>>

Package scoping and state are correctly preserved across multiple statments.

  >>> package Foo;

  >>> sub bar {
  ...     print "Hello World!\n";
  ... }

  >>> Foo::bar();
  Hello World!

  >>>

FUNCTIONS

Top

shell

  Perl::Shell::shell();

The shell function starts up the command line shell. It takes no parameters and returns when the user does an exit().

Lexical and package persistance is NOT maintained between multiple shell runs.

complete

  my $done = Perl::Shell::complete(@code);

The complete function takes one or more strings of Perl code (which it will join as lines if there are more than one) and uses PPI to determine is the code is a "complete" Perl document.

That is, does the code represent a string of Perl where the topmost level of nesting ( i.e. sub { ... } ) and the end of the string marks a natural statement boundary.

Returns true if the code is a complete document, or false if not.

This function is documented and supported as a convenience for other people implementing similar functionality (and may be moved into PPI itself at a later time).

SUPPORT

Top

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Perl-Shell

For other issues, or commercial enhancement or support, contact the author.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>

ACKNOWLEGEMENTS

Top

Thanks to Ingy for suggesting that this module should exist.

COPYRIGHT

Top


Perl-Shell documentation  | view source Contained in the Perl-Shell distribution.