Gaucheでコマンドの実行時に文字列を標準入力として与え、その結果を得るためには
gaucheでコマンドの実行時に文字列を標準入力として与え、その結果を得るためには call-with-process-io を使う。
portをcloseするのがめんどくさい。*1
なぜdisplayをprintにすると動かなくなるかは不明。
>>(use gauche.process) =>#<undef> >>((lambda (cmd str) (call-with-process-io cmd (lambda (in out) (display str out)(close-output-port out)(port->string in)))) "nkf -wmB" "GyRCJDMkcyRLJEEkb0AkMyYbKEIK") =>こんにちわ世界
gaucheのsystem該当の関数はprocess-output->stringと思ったがcall-with-input-processの方が良い - 計算機と戯れる日々では入力をあたえていなかった。
http://practical-scheme.net/wiliki/wiliki.cgi?c=s&key=Gauche%3a%e5%85%a5%e5%87%ba%e5%8a%9b%e3%83%9d%e3%83%bc%e3%83%88%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9
4月1日なのに面白いジョーク浮かばない…
追記 2008/04/01 21:03:09:
Function: write obj &optional port
Function: display obj &optional port[R5RS] オブジェクトobjの表示可能な表現を生成し、出力ポートに書き出します。 writeは可能な限り、objの標準的な外部表現を使い、 生成された出力がreadで再び読み込めるようにします。 displayはより人間にとって可読性の高い出力を生成します。
(中略)
Function: print expr …
expr … をdisplayを使って現在の出力ポートに表示し、 最後に改行を書き出します。
ちゃんとマニュアルよもうな>俺
いまいちGaucheのマニュアルって項目別にURLがふられていないし(http://.../...#print みたいに)、全文検索がないのでついつい引くのが億劫になってしまう。
自分でダウンロードして全文検索はするようにしたんだが元ページへのURLが…あ、そちらでそもそもindexはればいいのか。なんの為のクローラー(笑
ともかくありがとうございました。> id:SaitoAtsushi さん