InPerl
履歴閲覧: 最新 2009/11/12 2007/12/14 2004/02/24 2004/02/18 2004/01/23 2004/01/22 2004/01/16 2004/01/07 2003/12/18 2003/12/16 2003/12/16 2003/12/13 {2003/12/12[差分表示]}
+inperl : 'an interactive interpreter perl' (or 'INCHIKI-Perl') + +inperlは、すごくいいかげんに書いたPerl用のインタラクティブ・インタプリタです。 +inperlを使うと、対話的にperlを実行できます。 +pythonがうらやましくなったので、へろっと書いてみました。 + +-dオプションで起動するperlのデバッガでも似たようなことができますが、もうちょっと便利なのが欲しいので書いています。 + +@入手法 +@@ archive (tar.gz | zip) + http://white.niu.ne.jp/inperl/inperl-0.1.5.tar.gz + http://white.niu.ne.jp/inperl/inperl-0.1.5.zip +@@ Anonymous cvs <pre> -#!/usr/bin/perl -use Term::ReadLine; -my $IPERL_TERM = new Term::ReadLine 'Interactive Perl'; -my $IPERL_OUT = $IPERL_TERM->OUT || \*STDOUT; -my $IPERL_PROMPT = "iperl> "; -while(defined ($IPERL_LINE = $IPERL_TERM->readline($IPERL_PROMPT)) ){ - $IPERL_BUF .= $IPERL_LINE; - $IPERL_PROMPT = ' '; - { $IPERL_ = $_; - $_ = $IPERL_BUF; - if(scalar(/\{/) eq scalar(/\}/) && scalar(/\(/) eq scalar(/\)/)){ - $IPERL_EXEC = 1; - } - $_ = $IPERL_;} - if($IPERL_EXEC){ - print $IPERL_OUT eval($IPERL_BUF)."\n"; - warn $@ if $@; - $IPERL_BUF = ''; - $IPERL_PROMPT = "iperl> "; - $IPERL_EXEC = 0; - } - $IPERL_TERM->addhistory($IPERL_LINE) if $IPERL_LINE =~ /\S/; -} + cvs -d:pserver:anonymous@cvs.niu.ne.jp:/home/cvs/cvsroot login + cvs -d:pserver:anonymous@cvs.niu.ne.jp:/home/cvs/cvsroot co inperl
+
+@使用許諾
+とりあえず、YaPwやりすぎライセンス相当。
+
+@使い方
+Perl5以降(?)で動くと思います。
+起動すると'inperl> 'というプロンプトが出るので、適当にPerlの命令を入力してください。
+適当にPerlでevalして、evalした結果を出力します。
+
+引数を付けて起動すると、そのファイル名のファイルを読み込んで評価してから、プロンプトを表示します。
+
+
+@応用
+ * あらかじめYAMLモジュール入れてDumpとか使うと幸せになれます。
+ * ユニットテストとモジュール本体を同時に書いていく、というような使いかたに向いてます。
+ * WebAccess
+
+@@inperl内部コマンド
+evalしないでinperlが直接評価しちゃうコマンドについて。
+ * #dump [filename]
+ これまでに実行したコマンドを出力します。
+ filenameを指定した場合、そのファイルに書き出します。
+ 指定しなかった場合はコマンドラインに出力します。
+ 試しに実行したコードを残しておきたいときに便利です。
+ * #clear
+ #dump用のバッファの中身を消去します。
+ * #read filename
+ fileの中身を読み込んでq(...)という形に展開します。
+ '$file = #read targetfile' のようにして使います。
+ * #dir name
+ name で指定されたモジュール/オブジェクトの属するシンボルテーブルのkeyの一覧を出力
+ * #silent
+ evalした結果をprintしなくなります。
+ * #verbose
+ evalした結果をprintするようになります。
+ * (eval-line) #> file
+ その行をevalした結果をfileに書き出します。
+ * (eval-line) #>> file
+ その行をevalした結果をfileに追記します。
+ * #eval filename
+ ファイルを読み込んで評価します。
+
+@履歴
+ * cvs head
+ * コメント行があったときのブロック認識を少しだけましにした。
+ * toolbox/WebAccess.inperl をレポジトリに追加。要threadsサポート。
+ * 内部コマンド追加: '#eval filename' (ファイルを読み込んで評価)
+ * 0.1.5 http://white.niu.ne.jp/inperl/inperl-0.1.5.tar.gz
+ * 内部コマンド '#last' 追加
+ * 引数ファイルの'__END__'以降を評価しないように変更
+ * 0.1.4 http://white.niu.ne.jp/inperl/inperl-0.1.4.tar.gz
+ * 内部コマンド '#>> [filename]'追加
+ * 内部コマンド '#> [filename]'追加
+ * 内部コマンド #silent 追加
+ * 内部コマンド #verbose 追加
+ * 0.1.3 http://white.niu.ne.jp/inperl/inperl-0.1.3.tar.gz
+ * nobreakオプション(引数ファイル評価がエラーしたときに終了しない)を追加
+ * 起動時の引数で指定されたファイルを読み込んで評価するようにした。
+ * 内部コマンド追加:'#read filename' (ファイルを読み込んでq()で囲った形に置換)
+ # `cat req`で同じ事ができることに後から気付く罠。
+ * 0.1.2 http://white.niu.ne.jp/inperl/inperl-0.1.2.tar.gz
+ * シンボルテーブルのkeyの一覧を吐き出す '#dir ModuleName?/object' 内部コマンドを追加
+ * 0.1.1 http://white.niu.ne.jp/inperl/inperl-0.1.1.tar.gz
+ * ブロック判定のエラー修正
+ * 0.1 http://white.niu.ne.jp/inperl/inperl-0.1.tar.gz