App-REPL v0.1 0. The install worked, but 'iperl' is complaining that it can't find App::REPL ! Why do you hate me? Try again -- it'll work this time. Sorry, I've no idea why this happens. I can't reproduce it after it happens the once. 1. What does the name mean? Read-Eval-Print-Loop. App-REPL offers an application that reads Perl, evaluates it, and tries to print a result. 2. Tries to? It doesn't bother with 'CODE' refs, for instance. 3. How does it do that at all? Can it only handle simple expressions? It uses PPI to find a good place within the given Perl to insert an assignment. It isn't perfect, and probably you can find places where it doesn't print anything useful. You can type arbitrarily complex Perl, though -- with 'package' statements, subroutine definitions, &c. 4. ... all on a single line? :-/ No. Again, it uses PPI to try and determine if your Perl is complete, and if not it will continue to prompt you for the rest. 5. Tries to? Well, Perl isn't Python :-) Without imposing annoying restrictions, App-REPL can't know that you meant for the second line to continue on from the first, in: print $a, $b, $c, $d; One error in the current version is that App-Perl doesn't notice that this is incomplete: print qw(a b It -can- notice, but PPI currently handles quote-like operators strangely, treating qw## and qw() in oddly different ways, and I want to either resolve that or resolve my thinking about that before I add further magic to App-REPL 6. You say 'magic', but I hear 'fragile evil'. What does App-REPL do that's fragile and evil? Well, several things. 1. The current version monkey-patches a bug out of PPI, so that I don't have to wait for the next PPI to be released before I can get comments on this (alpha, anyway) version of App-REPL. 2. It relies on the way PPI structures things, and -modifies- that structure without PPI's knowledge, in ways that I figured out through trial and Data::Dumper 3. It uses PadWalker 7. Yow. Anything else I should worry about? Everything you enter will be eval'd with lengthy prologue and epilogue code, first to set up the environment and finally to remember what you did to the environment. Although this system -does- try to handle packages well, it currently only recognizes the final package of your eval. So, if you do: package A; my $b = 1; package B; '$b' will not be available for your next eval. INSTALLATION To install this module, run the following commands: perl Makefile.PL make make test make install COPYRIGHT AND LICENCE Copyright (C) 2007 Julian Fondren This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.