【问题标题】:flip-flop-operator/readline-counter question触发器操作员/读取线计数器问题
【发布时间】:2013-05-31 23:04:10
【问题描述】:
【问题讨论】:
标签:
perl
counter
readline
flip-flop
【解决方案1】:
引用perlop:
在标量上下文中,“..”返回一个
布尔值。运营商是
双稳态,就像触发器一样,并且
模拟行范围(逗号)
sed、awk 和各种
编辑。每个“..”运营商维护
它自己的布尔状态,甚至跨越
调用包含
它。只要它在左边就是假的
操作数为假。一旦左
操作数为真,范围运算符
在正确的操作数是之前保持为真
true,在范围运算符之后
再次变为虚假。不会变成
false 直到下一次的范围
运算符被评估。它可以测试
正确的操作数并在
同样的评估它变成了真的(如
awk),但它仍然返回一次 true。
如果您不希望它测试正确
直到下一次评估的操作数,如
在 sed 中,只需使用三个点 ("...")
而不是两个。在所有其他方面,
“...”的行为就像“..”一样。
不计算右操作数
而运营商处于“假”
状态,并且左操作数不是
当操作员在
“真实”状态。优先级是
略低于|| 和&&。价值
返回的要么是空字符串
为假,或序列号
(以 1 开头)为真。这
序列号被重置为每个
遇到的范围。 最后的序列
范围内的数字具有字符串“E0”
附加到它,这不影响
它的数值,但给你
如果你想搜索的东西
排除端点。你可以排除
通过等待的起点
序列号大于 1。
如果标量“..”的任一操作数是
常量表达式,该操作数是
如果相等则认为是真的 (==)
到当前输入的行号(
$. 变量)。
(强调)