1.1. 从标准输入设备输入
<STDIN>
行输入操作在到达文件的结尾时将返回undef,在while循环的条件中不能使用chomp:
while (defined($line = <STDIN>)) {
print “I saw $line”;
}
在循环的内部,我们将看到每一行,一行接着一行,perl提供简写:
while(<STDIN>){
print “I saw $_”;
}
while (defined($_ = <STDIN>)){
print “I saw $_”;
}
两者是等同的
在进行深入讨论前,我们要澄清一些事:这种简写只在特定的情况下有效,默认的情况下不会将一行读入变量$_。仅当while循环的条件判断部分只包含行输入操作才有效。
对于foreach用法有些区别:
foreach(<STDIN>){
print “I saw $_”;
}
在while 循环中,Perl 读入一行,将它赋给变量,然后进入循环。再回到开头,读入下一行。在foreach 循环中,由于行输入操作在列表的context 中使用,因为foreach 需要一个列表作为其参数。
这一点影响很多,一次读一行和一次读一个文件差别很大。
1.2.命令行输入
参数为要被程序顺序处理的文件名。
尖括号操作(<>)是一种特殊的行输入操作,其输入可由用户选择:
可以使标准输入,也可以使命令行参数。
while (defined($line = <>)){
chomp($line);<