閉じる

perlの標準入力

標準入力を処理するアプリにて以下のようなコードを書いていた。

while (<>) {
}

これはこれで期待通りに動作するのだけど、コマンドラインからオプションを指定すると「Can’t open OPTION: No such file or directory」というエラーになる。
どうやら、コマンドラインの指定をファイルの指定と見なして標準入力にリダイレクトしてくれちゃうらしい。*1

解決策としては STDINを明示すること。

while (<STDIN>) {
}

*1 ちなみにこの状態でパイプなどを使って入力を与えようとしても無視されるし、@ARGVも空になる。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)