標準入力から1行読み込んでくれる

が呼ばれると、標準入力から1行読み込んでくれます。1行とは改行コードまでのことで、改行コードも含みます。
ちなみに、STDIN は standard inputの略です。

どんな、感じ?

  1 #!/usr/bin/perl
  2 
  3 use strict;
  4 use warnings;
  5 
  6 my $a = <STDIN>;
  7 my $b = <STDIN>;
  8 
  9 print $a;
 10 print $b;
$ cat test.txt
Hello
World
$ ./test.pl < test.txt
Hello
World
$

こんな、感じです。
1行目を読み込んで、$aに代入して、
2行めを読み込んで、$bに代入して、
printで読み込んだのを出力。

何回も、呼び出したら、どうなるのか?

$a = <STDIN>;
$b = <STDIN>;
$c = <STDIN>;
$d = <STDIN>;
$e = <STDIN>;
.
.

てな感じで、標準入力から読み込むことがないのにを呼び出すとどうなるのか?
実は、Perl殿はを呼ぶと、ファイルポインタという『どこまでを読み込んだかという情報』を保持している。そして、ファイルポインタが標準入力の末尾を指すと、の呼び出しに対して、undefを返します。
ということで、この場合、

$c = undef;
$d = undef;
$e = undef;
.
.

となる。

このことを利用して

次のような書き方ができる

while (<STDIN>) {
  .....
}

標準入力から読み込んでいる間、の値はゼロ以外なのでwhileループの中は実行される。そして、ファイルポインタが末尾を指し、読み込むものがなくなるとはundefを返す。これは偽となるので、whileループを脱出する。