触发器运算符/ readline-counter问题
题
阅读此 Perl:从1到n提取行(Windows)我不了解触发器运算符/ readline-counter部分。 通用标签
1
2
3E0有人可以详细解释这个输出的来源吗?
解决方案
引用 perlop :
在标量上下文中,“
..
”返回一个 布尔值。操作员是 像触发器一样的双稳态 模拟行范围(逗号) sed , awk 和其他各种运算符 编辑。每个“..
”运算符维护 它自己的布尔状态,甚至跨越 调用包含以下内容的子例程 它。只要它离开就错了 操作数为假。一旦离开 操作数为true,范围运算符 保持正确,直到正确的操作数为 正确,之后是范围运算符 再次变为假。它没有变成 直到下一次错误范围 运算符被评估。它可以测试 正确的操作数,并且在 同样的评估也成为现实(如 awk ),但一次仍返回true。 如果您不希望它测试正确 操作数,直到下一次评估为止 在 sed 中,只需使用三个点(“...
”) 而不是两个。在所有其他方面, “...
”的行为就像“..
”一样。未评估正确的操作数 当操作员处于“假”状态时 状态,而左操作数不是 当操作员在 “真实”状态。优先是 比
||
和&&
低一点。价值 返回的是空字符串 代表假或序列号 (从1开始)为true。的 重置每个的序号 遇到的范围。 最终序列 范围中的数字具有字符串“ E0” ,它不会影响 它的数值,但是给你 要搜索的东西 排除端点。您可以排除 通过等待起点 序列号大于1。如果标量“
..
”的任何一个操作数是一个 常量表达式,该操作数为 如果相等则视为真(==
) 到当前输入行号($.
变量)。(添加了重点)