我使用范围运算符在perl中试验了一个简单的程序。
eg: my @array = (1..100) ;
print "@array\n"
这打印了数组中的1到100个值,但是如果我给..
,则代替...
即使打印了从1到100的值。
但忽略了超过3 .
并且抛出了错误。
我想知道为什么...
有效以及我如何得到正确的输出?
答案 0 :(得分:4)
..
和...
之间的差异仅在标量上下文中用作触发器时才会显示。请参阅perlop中的范围运算符:
如果您不希望它在下一次评估之前测试正确的操作数, 就像在sed中一样,只需使用三个点(" ...")而不是两个点。在所有其他方面," ..."表现得像" .."确实
答案 1 :(得分:0)
..
和...
是不同的操作符:
在标量上下文中,“..”返回一个布尔值。运营商是 双稳态,如触发器,并模拟行范围(逗号) sed,awk和各种编辑的运营商。每个“..”运算符 即使在调用子例程时,它也会保持自己的布尔状态 包含它。只要其左操作数为假,它就是假的。 一旦左操作数为真,范围运算符将保持为真,直到 右操作数为true,范围运算符变为false 再次。直到下一次范围操作员才会变为假 被评估。它可以测试正确的操作数并在其上变为false 相同的评价它成为现实(如在awk中),但它仍然返回true 一旦。如果你不希望它在下一次之前测试正确的操作数 评估,如在sed中,只使用三个点(“...”)而不是两个点。在 所有其他方面,“......”的行为就像“......”一样。