

perl初心者です。  
perlファイルで `while(<STDIN>)`って何かまったくわかりません。  
何ですかね？


CC BY-SA 3.0
2017-07-05T10:27:36.960
36111
2017-07-09T18:10:00.037
2017-07-09T13:01:11.063
3054
20350
question
perl
perl で while(<STDIN>) は何を意味しますか？


`STDIN` はファイルハンドルで、標準入力にアサインされています。  
標準入力とは  
キーボードからの入力やパイプ（例：`cat sample.txt || perl test.pl`） や  
リダイレクト（例：`perl test.pl < sample.txt`）されたファイルのことです。

`<STDIN>` は、  
`<ファイルハンドル>`で、指定されたファイルから一行を読込み、変数`$_`に暗黙に代入されます。  
つまり、標準入力から一行読み込んで`$_`に内容を設定します。

`while(<STDIN>)` は、  
`while(条件)` で条件が失敗するまで繰り返します。  
この場合標準入力が最後（キーボードの場合は`EOF` が(windowsの場合は`Ctrl`+`Z`,
UNIX系の場合は`Ctrl`+`D`で）入力される）になるまで繰り返し入力します。

ちなみに  
`while(<STDIN>)` は、`STDIN`を省略して`while(<>)`
と書くことができます。(※コマンドライン引数に入力ファイル（複数可）が与えられなかった場合)


CC BY-SA 3.0
2017-07-05T10:49:47.653
36113
2017-07-09T18:10:00.037
2017-07-09T18:10:00.037
5044
5044
36111
answer