The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    Perl::Shell - A Python-style "command line interpreter" for Perl

SYNOPSIS
      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
    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
  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
    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
    Adam Kennedy <adamk@cpan.org>

ACKNOWLEGEMENTS
    Thanks to Ingy for suggesting that this module should exist.

COPYRIGHT
    Copyright 2008 - 2010 Adam Kennedy.

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

    The full text of the license can be found in the LICENSE file included
    with this module.