Smartmatch从5.27 ~~ vs =〜

Mic*_* G. 5 regex perl

我现在正在使用Perl 5.24,并且smartmatch是一个出色的多功能操作员,例如,

%foobar ~~ @foo; 
Run Code Online (Sandbox Code Playgroud)

以及其中的所有复杂性。

我了解从5.27开始,其功能将简化为涉及以下内容的智能手表:

$foo = qr/foo/; 
Run Code Online (Sandbox Code Playgroud)

好吧,我将不得不重写我的数据管道以使其合规。

我的问题是,如果确认有什么区别,

'foo' ~~ $foo;
Run Code Online (Sandbox Code Playgroud)

和,

 'foo' =~ /$foo/;
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,除了名称之外,smartmatch已全部删除。我是对的,如果不是,我会缺少什么?

历史

它具有不寻常的历史,必须强调它被归类为实验性。我正在绘制我所知道的图表。我想你们中的许多人会知道更多,任何输入都会有所帮助,因为这是(对学生)语言进化的一个例子:

  • 5.10首次引入
  • 5.14引入了%foobar ~~ @foo类型匹配
  • 5.27除名称外,全部删除了吗?还在实验吗?

小智 6

智能匹配仍处于实验阶段。

如果我们有时间机器,那么从事perl开发的大多数人都会回到过去,并从perl5中删除智能匹配。智能匹配所做的唯一一件事就是清楚地表明,如果要从perl6中获取某些东西并将其连接到perl5中,则要比这复杂得多say

没有人知道perl5中智能匹配的未来。对于应该是什么没有达成共识。如果不是因为可怕的“向后兼容性”,聪明的比赛将​​在多年前就死定了。

为自己节省很多痛苦,不要使用智能匹配。

  • Hrm,试图在[perl5.porters档案中找到[智能匹配的简要摘要]](https://www.nntp.perl.org/group/perl.perl5.porters/)。很高兴您在此处提供摘要,因为通过Web界面访问归档文件并不容易实现蒸馏。 (2认同)