REPL、したいですよね。私はしたいです。
で、検索して「perlで快適REPL生活!」という記事を見つけました。
早速 Carp::Reply をインストールして挑戦!
(コードは上記 @sonots さんの記事からの孫引きです)
use strict; use warnings; use Carp::Reply qw(repl); my $foo = 'foo value'; Carp::Reply::repl(); #=> ここでREPLに入る #=> ↓は、REPLをC-dが:qコマンドで抜けた後に実行される my $baz = 'baz value'; print "$baz\n";
これでバッチリ!
…と思いきやうまくいきません。
% perl test.pl Now at test.pl:7 (frame 0) Backtrace: Trace begun at test.pl line 7 Environment values must be references, not SCALAR(0x1d6f720) at /home/azureuser/perl5/lib/perl5/Reply/Plugin/Defaults.pm line 57.
調べてみると issue として報告されており、このままではダメなようです。
どうしよう…
実は上記とは別に Pry というものも検討していて、どちらにしようか迷っていました。
というわけで Pry をインストールして再挑戦!
#!/Usr/bin/env perl use strict; use warnings; use Pry; my $foo = 'foo value'; pry; #=> ここでREPLに入る #=> ↓は、REPLをC-dが:qコマンドで抜けた後に実行される my $baz = 'baz value'; print "$baz\n"; print "$foo\n";
実行してみると、バッチリ!
% perl test.pl Prying at test.pl line 7 Current package: 'main' Lexicals in scope: $foo Ctrl+D to finish prying. 0> $foo $res[0] = 'foo value' 1> $foo='xyzzy' $res[1] = 'xyzzy' 2> Finished prying! baz value xyzzy %
みなさんもぜひ試してみてください!
では!