Perl
REPL
eval

本当のエスケープシーケンスをPerlでまんまREP


PerlのEvalを使ったまんまREL(REPL)


rep.pl

#!/usr/bin/perl

#CTL+C と CTL+TERMをハンドリングしてエスケープシーケンスを戻す
local $SIG{INT} = sub { print "\e[m"; exit ;};
local $SIG{TERM} = sub { print "\e[m"; exit ;};
print( "\e[44;37;5m");
while($REP::read=<STDIN>) {
print("\e[47;30m");
#EVAL関数で評価結果とエラーを拾う
$REP::eval=eval($REP::read);
print("\e[m\n(\e[47;31;2m\e[5m$REP::eval\e[m)\n");
#以下がエラー発生時を拾って表示
print("\e[47;30m",$@) if ($@) ;
print("\e[44;37;5m");
}
$SIG{TERM}->();


本当のエスケープシーケンス使った結果のREP(ReadEvalPrint)例

PerlerREP_ESCsequence.png


エスケープシーケンスは以下のサイトをまんま参考に

http://www.m-bsys.com/linux/echo-color-1