対話式Perl

30分プログラム、その37。

PythonにもRubyにもHaskellにも.....ある対話環境がPerlにないのは不満なので、簡単なやつを作ってしまおう。

> 'a'
=> 'a'

> $name = 'mzp'
'mzp'

>"hello $name"
=> 'hello mzp'
use strict;
use warnings;
use Data::Dumper;
use Term::ReadLine;
 
local $Data::Dumper::Purity=0;
local $Data::Dumper::Terse=1;
my $term = new Term::ReadLine 'term';
while(defined($_=$term->readline('>'))){
    no strict;
    my @result = eval($_);
    if($@){
	print $@;
    }else{
	print "=> ",Dumper(@result);
    }
     
    $term->addhistory($_) if /^\s+$/;
}
  • Readlineは必須でしょう
  • 一応、リストでも表示できるけど、あまりうまくいかない
  • perl -de 0とかで対話環境っぽいのができるのはしってる。でも、評価した値がすぐにでてこないのが不満
  • 結構、よっぱらってる