perl のプログラムを、Emacs の shell で実行すると,打ったコマンドが、次の行に現れて、プログラムがうまく動いてくれません。たとえば、
print "Enter a first number: ";
chomp($one = <STDIN>);
の部分が、プリントされないのです。何も表示されてないところへ、数を入力すると、最後にまとめてプリントされます。
 Emacs をカスタマイズすれば直るものでしたら、嬉しいんですが。
 ちなみに、perl は、Active Perl です。
どなたか、わかる方がおられましたら、ご教示願います。

A 回答 (1件)

perlが標準出力をバッファリング(ある程度溜め込んで暇なときに一気に書き出す)しているのでそうなります。


確かに、入力待ちメッセージなどのときはわずらわしいですね。

ぱっと思いつく解決法は以下の2つです。
1.改行(\n)を入れる
2.バッファリング設定を「バッファリングしない」に変更(特殊変数 $| に数値0以外の値を格納)

参考URL:http://www.nishishi.com/blog/2006/05/perl_buffer …
    • good
    • 0
この回答へのお礼

おっしゃるとおりに、$|=1; としてやると、見事に解決しました。ありがとうございました。ところで、どうしたら、あなたのように、難しい知識が身に付けられるのですか?
 これからも、よろしくお願いします。

お礼日時:2009/05/15 17:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報