gpt4 book ai didi

perl - 如何理解 Perl 语句修饰符中的范围?

转载 作者:行者123 更新时间:2023-12-02 08:28:01 25 4
gpt4 key购买 nike

Perl 支持 range in statement modifier 如下,解释器如何与 $. 一起处理它?我想知道规则解释器会处理它,因为这不是一个简单的 bool 表达式。

while (<>)
{
print if 10 .. 20;
print if /pat1/ .. /pat2/;
}

最佳答案

在标量上下文中使用时,它称为触发器运算符。


当它的操作数是常量时,它们与$.比较,所以

print if 10 .. 20;

的缩写
print if $. == 10 .. $. == 20;

触发器将从第 10 行开始返回 true,直到第 20 行。

$ perl -E'say for "a".."z"' |
perl -ne'print if 10 .. 20;'
j
k
l
m
n
o
p
q
r
s
t

其余时间,操作数按原样求值,所以

print if /pat1/ .. /pat2/;

将从匹配 pat1 的行 ($_) 开始返回 true,直到匹配 pat2 的行 ($_)

$ perl -E'say for "z", "xpat1x", "x", "xpat2x", "z", "ypat1y", "y", "ypat2y", "z"' |
perl -ne'print if /pat1/ .. /pat2/;'
xpat1x
x
xpat2x
ypat1y
y
ypat2y

关于perl - 如何理解 Perl 语句修饰符中的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com