作者: ねこ丸
日時: 2003/12/11(20:11)
  ねこ丸です。

  最近ようやく自分の中の Perl 4 時代に終わりを告げ、use strict で OO だ
ぜぃと一人でぶいぶい盛り上がっていたのですが、ふと、ものすごく初歩的な話
でつまずいてしまいました。それは

                    標準入力の扱いってこれでいいんだっけ?

  てことです(^^;
  最近書いていた Perl スクリプトで

  print "○○は××されます。よろしいですか? ( yes / no ) ";
  $answer = <STDIN>;
  ...
  ...

  みたいなものを使ったのですが、「キーボードからの入力の終了が Ctrl + D 
しないと検出されない」というなんかかっこ悪いものになってしまいました。も
うこんなことしたのは DOS 以来なので、当時どういう動作だったのか覚えてい
ないのですが、これってこんなもんでしたっけ?(^^;  検索しまくったのですが、
こんな「BASIC時代かよ!」的なスクリプトのサンプルとか動作の記述は見つか
らないんですよね(^^;
  というわけで「それが仕様です」「こうすれば違う動きにできます」といった
アドバイスがいただければ、と思いまして。

  もう一つ、Ruby の練習を始めたのですが、Perl で

  while ( <> ) {
    ..
  }

  に当たるものは Ruby では

  while gets
    ..
  end

  ですよね。これを while ( line = STDIN.gets ) にしたところ(かっこは気
分です)、このスクリプトに引数で与えたファイルを読むのではなく、キーボー
ドからの入力を待つ動作になりました。
  これは「こういうもの」なんでしょうけど、Perl のように <> という目に見
えるものがないのがちょっと気持ち悪いんです。(gets がそれだと言われれば
そうなんですけど、gets は誰のメソッドやねんちゅー話です。)<> の代わりに
なるようなものは何もないのでしょうか?

# ちなみにこのときは改行を受け取ったら処理が進んでくれたのでこの点は Ruby 
# の方が期待通りでした。

  あ、最後になりましたが環境は Perl 5.6.1 と Ruby 1.6.7 です。

# さーどんどん TSNET のレベルを下げるぞ

--
    ねこ丸