gpt4 book ai didi

regex - qr() 的输出何时以及为何发生变化?

转载 作者:行者123 更新时间:2023-12-04 16:34:21 26 4
gpt4 key购买 nike

perl 的输出 qr已经改变了,显然在 5.10.1 和 5.14.2 之间的某个时候,并且改变没有记录 - 至少没有完全记录。

要演示更改,请在每个版本上执行以下单行:

perl -e 'print qr(foo)is."\n"'

perl 5.10.1-17squeeze6 的输出(Debian 挤压):
(?-xism:foo)

perl 5.14.2-21+deb7u1 (Debian wheezy) 的输出:
(?^:foo)

perl 文档( perldoc perlop )说:

$rex = qr/my.STRING/is;
print $rex; # prints (?si-xm:my.STRING)
s/$rex/foo/;



这似乎不再是真的:
$ perl -e 'print qr/my.STRING/is."\n"'
(?^si:my.STRING)

我想知道此更改何时发生(哪个版本的 Perl,或支持库或其他什么)。

一些背景,以防万一:

此更改导致大量单元测试失败。我需要决定是否应该简单地更新单元测试以反射(reflect)新格式,或者使测试足够动态以支持两种格式等。为了做出明智的决定,我想了解为什么会发生变化。了解事件发生的时间和地点似乎是调查的最佳起点。

最佳答案

它记录在 perl5140delta 中:

Regular Expressions

(?^...) construct signifies default modifiers

[...] Stringification of regular expressions now uses this notation. [...]

This change is likely to break code that compares stringified regular expressions with fixed strings containing ?-xism.



函数 regexp_pattern 可用于解析修饰符以进行规范化。

关于regex - qr() 的输出何时以及为何发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348491/

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