Perl5 で irb 相当のことをする方法、すなわち REPL をする方法
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 というモジュールがあって、これは非常に高機能なのだが、起動に時間がかかるし依存が非常におおいのでおすすめしない。