• ベストアンサー

Windows 用 Emacs で、shell で困ってます

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

質問者が選んだベストアンサー

  • ベストアンサー
  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

perlが標準出力をバッファリング(ある程度溜め込んで暇なときに一気に書き出す)しているのでそうなります。 確かに、入力待ちメッセージなどのときはわずらわしいですね。 ぱっと思いつく解決法は以下の2つです。 1.改行(\n)を入れる 2.バッファリング設定を「バッファリングしない」に変更(特殊変数 $| に数値0以外の値を格納)

参考URL:
http://www.nishishi.com/blog/2006/05/perl_buffer_flu.html
mmkr
質問者

お礼

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

関連するQ&A