在?PATTERN?
的讨论中,perlop
声明“这种用法被模糊地弃用”。这是否意味着??
匹配运算符本身将从perl中删除,还是意味着它的语义会发生变化?使用??
是个坏主意,还是可以忽略perlop中的警告?
答案 0 :(得分:5)
我认为这或多或少意味着它的含义:
这种用法被模糊地弃用了,这意味着它可能会在一些遥远的未来版本的Perl中删除,也许在2168年左右。
这意味着他们在发布Perl 6时会将其删除。
我小孩,我小时候。我认为“模糊地弃用”意味着它不是一个糟糕的结构,但你可能想重新考虑你的设计。我个人甚至不知道它是什么(或reset()
功能甚至存在),直到我刚看了它,看到它,我不知道我是否会用它做任何事情。他们在perlop中给出的例子有点神秘:
while (<>) {
if (?^$?) {
...
}
} continue {
reset if eof;
}
我会写相同的,更明显的:
my $reset = 1;
while (<>) {
if ($reset and /^$/) {
...
$reset = 0;
}
} continue {
$reset = 1 if eof;
}
它更冗长,但它在大脑(和维护者)上更明显,更容易。
答案 1 :(得分:5)
你没看过句子的其余部分吗?看起来很清楚:
这种用法被模糊地弃用,这意味着它可能 可能会在一些遥远的未来版本的Perl 中删除, 也许是2168年左右的某个地方。
对我而言,Perl的维护者不喜欢特殊情况,并且宁愿人们不使用它,但没有计划改变它。
使用安全。它必须经过一个真正的弃用周期(可能会持续一段时间)才能被删除。那就是说,我不会用它。这个功能足够深入,以至于很容易混淆任何人最终维护你的代码(可能是未来的代码)。