標準入力を処理するアプリにて以下のようなコードを書いていた。
while (<>) {
}
これはこれで期待通りに動作するのだけど、コマンドラインからオプションを指定すると「Can’t open OPTION: No such file or directory」というエラーになる。
どうやら、コマンドラインの指定をファイルの指定と見なして標準入力にリダイレクトしてくれちゃうらしい。*1
解決策としては STDINを明示すること。
while (<STDIN>) {
}
*1 ちなみにこの状態でパイプなどを使って入力を与えようとしても無視されるし、@ARGVも空になる。