本当のエスケープシーケンスを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)例

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