如何在Perl中检查eof?

int*_*iha 3 perl eof

因此,在以下情况中,我有一些问题可以确定Perl的作用:

while(1){
$inputLine=<STDIN>

#parse $inputLine below
#BUT FIRST, I need to check if $inputLine = EOF

}
Run Code Online (Sandbox Code Playgroud)

在我得到明显的使用答案之前while(<>){},让我说有一个非常强大的理由,我必须做上述事情(基本上设置一个警报来中断阻止,我不希望代码混乱的例子).

有没有比较$inputLine == undef(因为我认为这是STDIN最后返回的).

谢谢.

Gre*_*con 11

在你的循环中,使用

last unless defined $inputLine;
Run Code Online (Sandbox Code Playgroud)

perlfunc文档defined:

定义了EXPR
定义

返回一个布尔值,告知EXPR是否具有未定义值以外的值undef.如果EXPR不存在,$_将进行检查.

许多操作返回undef以指示失败,文件结束,系统错误,未初始化的变量和其他异常情况.此功能允许您区分undef其他值.(一个简单的布尔测试不会区分undef零,空字符串,并且"0"都是同样错误的.)注意,因为它undef是一个有效的标量,它的存在并不一定表示异常条件:当它的参数是一个时pop返回undef空数组,或者当要返回的元素恰好时undef.