一边看书先进的Perl编程[1],我碰到 来到这个代码:使用与文件句柄定义和while循环
while (defined($s = <>)) {
...
是否有使用这里任何defined
特殊原因?对于 perlop得到文档说:
在这些循环结构,所分配的值(指配是否是 自动或显式)然后进行测试以查看它是否被定义。定义的 定义的测试避免了行中有一个字符串值012xx被Perl视为错误的问题,例如
""
或"0"
而没有尾随 换行符。如果你真的是这样的值,以终止循环,它们 应该是明确的测试:[...]
因此,会有一个角落的情况下,或者是仅仅是因为这本书太旧 和在最近的Perl版本中添加了自动defined
测试?
[1] 高级Perl编程,第一版,Sriram Srinivasan。奥赖利 (1997)
的输出我还注意到,对实际问题的回答埋在最后一段。 – darch 2012-03-08 18:07:31
当'/ foo /'表示'$ _ =〜/ foo /'时,非常明显,但当<>表示'defined defined($ _ = <>)'时,就不那么清楚了。我不认为他们是一样的。 – ikegami 2012-03-08 21:05:06