稳定且优雅地使用`qr`的表达方式

问题描述 投票:0回答:1

在某些代码中,我创建了一个常量正则表达式,其中正则表达式包含 Perl 表达式(“代码”),我想知道是否有比这更稳定(即:非实验)和更优雅的解决方案(使用 Perl 5.18)。 2):

use constant    RE_SAMPLE => (
    map { qr/$_/ }
    ('^(' .
     join('|',
          qw(many cool strings and stuff like that)) .
     ')(?::(.+))?$')
)[0];

我的意思是丑陋的部分是从表达式创建一个列表,只是为了映射它,然后只从列表中取出唯一的元素作为结果。

regex perl expression
1个回答
0
投票

对于一种既要干净又优雅的声明来说似乎太多了。

为什么不分手呢

use constant PATT => do { 
    my $alt = join '|', qw(many cool strings);
    qr/^ ($alt) (?: :(.+) )? $/x;
};

我觉得这个很好看?

© www.soinside.com 2019 - 2024. All rights reserved.