读取标准输入<STDIN>
<STDIN>
表示从标准输入中读取内容,如果没有,则等待输入。<STDIN>
读取到的结果中,如果没有意外,都会自带换行符。
例如,test.plx文件内容:
#!/usr/bin/perl
#
$line=<STDIN>;
if($line eq "\n"){
print "blank line\n";
} else {
print "not blank: $line"
}
注意上面的else语句中,$line
后面没有加换行符,因为<STDIN>
自带换行符。
下面的命令,将等待输入和回车。如果直接回车,则if条件为真。
perl test.plx
下面是和bash shell交互。
echo "hello" | perl test.plx
echo -e "haha\nheihei" | perl test.plx
注意上面第二条语句中,heihei会被忽略,因为上面的操作是标量上下文(上下文的概念,以后会解释),在发现换行符的时候,结束输入的读取,所以看到haha后面的"\n"就结束了。
因为<STDIN>
读取的是标准输入,所以如果要通过它读取文件内容,需要使用shell的重定向功能。例如,读取a.txt文件的内容到<STDIN>
:
perl test.plx <a.txt
另外,<STDIN>
在标量上下文中返回的是某一行,可以使用while来遍历多行,但在遍历时要书写准确:
# 错误遍历
$line = <STDIN>;
while(defined($lin