范围运算符'...'而不是'..'它有效

时间:2015-04-10 09:44:04

标签: perl

我使用范围运算符在perl中试验了一个简单的程序。

           eg: my @array = (1..100) ;
                print "@array\n"

这打印了数组中的1到100个值,但是如果我给..,则代替...即使打印了从1到100的值。

但忽略了超过3 .并且抛出了错误。

我想知道为什么...有效以及我如何得到正确的输出?

2 个答案:

答案 0 :(得分:4)

.....之间的差异仅在标量上下文中用作触发器时才会显示。请参阅perlop中的范围运算符

  

如果您不希望它在下一次评估之前测试正确的操作数,          就像在sed中一样,只需使用三个点(" ...")而不是两个点。在所有其他方面," ..."表现得像" .."确实

答案 1 :(得分:0)

.....是不同的操作符:

See here

  

在标量上下文中,“..”返回一个布尔值。运营商是   双稳态,如触发器,并模拟行范围(逗号)   sed,awk和各种编辑的运营商。每个“..”运算符   即使在调用子例程时,它也会保持自己的布尔状态   包含它。只要其左操作数为假,它就是假的。   一旦左操作数为真,范围运算符将保持为真,直到   右操作数为true,范围运算符变为false   再次。直到下一次范围操作员才会变为假   被评估。它可以测试正确的操作数并在其上变为false   相同的评价它成为现实(如在awk中),但它仍然返回true   一旦。如果你不希望它在下一次之前测试正确的操作数   评估,如在sed中,只使用三个点(“...”)而不是两个点。在   所有其他方面,“......”的行为就像“......”一样。