perlで快適REPL生活!(2015年版)

このエントリーをはてなブックマークに追加
こんにちは! ueharak です。

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
%

みなさんもぜひ試してみてください!

では!


次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...