Perlの対話モード

調べても情報古かったり、よく分からなかったり、うーん。

Perlの対話モード、なんて洒落たものは標準では存在しない

pythonとかirbとか涙ちょちょぎれるぐらい便利ですね。特にPythonの「デフォルトは対話なんだ」という姿勢には感服です。

ではPerlは?というお話ですが、ググると色々あるようではあります。

  • デバッガを使う perl -de 0
  • psh
  • perlsh (Term::ReadLine::Gnuから抽出?)
  • pirl (Shell::Perl)
  • re.pl (Devel::REPL)

などなど。ググるとperlshの情報が多いようですが、結論から言うと、re.plというのが一番イマドキのようです(?)。re.plはDevel::REPLで入るらしいのでCPANから入れればよいのですが…

$ cpanm Devel::REPL
...
$ re.pl
Failed to load role: Devel::REPL::Plugin::LexEnv Can't locate Lexical/Persistence.pm in @INC
... 
$ cpanm Lexical::Persistence
...
$ re.pl
Failed to load role: Devel::REPL::Plugin::DDS Can't locate Data/Dump/Streamer.pm in @INC
...
$ cpanm Data::Dump::Streamer
...
$ re.pl
Failed to load role: Devel::REPL::Plugin::MultiLine::PPI Can't locate PPI.pm in @INC
...
(ぉぃぉぃ)
$ cpnam PPI
...
$ re.pl

依存関係解決が面倒なのが難点です。初心者に優しくない安定のPerlクオリティですね。しかも改行が色々おかしい。ヒストリも使えない。

少し調べた所、この症状はTerm::ReadLine::Perlを入れると直るという話があったで、入れてみます。

$ cpanm Term::ReadLine::Perl

すごく、いい感じになりました。キーバインドも効きます(Mac)。

もっとも、perl -de 0でもヒストリとか効くようになったので、それでも十分かもしれません。ツールの選択肢の多さも(良くも悪くも)TMTOWTDIってことでしょうかね。