Perl5 で REPL(Read-Eval-Print-Loop)をつかいたければ、perl -de 1 をつかえばいい。
perl5 についているデバッガ機能をつかえば、一応 REPL っぽいことはできるので、以下のようにしてつかう。
% perl -de 1
Loading DB routines from perl5db.pl version 1.33
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1): 1
DB<1> print 3+2;
5
DB<2>
ただしこの場合、lexical 変数が保存されないのでたとえば以下のコードは意図したとおりにはうごかない。
DB<1> my $x =1;
DB<2> print $x, "\n";
この問題を解決するために mst が開発したのが Eval::WithLexicalsで、このモジュールに添付されている tinyrepl コマンドをつかうと以下のように意図した動作となる。Eval::WithLexicals は依存もすくないので、気軽に導入できる。
% tinyrepl
re.pl$ my $x = 1;
1
re.pl$ print $x, "\n";
1
1
また mst が以前につくった Devel::REPL というモジュールがあって、これは非常に高機能なのだが、起動に時間がかかるし依存が非常におおいのでおすすめしない。