在某些代码中,我创建了一个常量正则表达式,其中正则表达式包含 Perl 表达式(“代码”),我想知道是否有比这更稳定(即:非实验)和更优雅的解决方案(使用 Perl 5.18)。 2):
use constant RE_SAMPLE => (
map { qr/$_/ }
('^(' .
join('|',
qw(many cool strings and stuff like that)) .
')(?::(.+))?$')
)[0];
我的意思是丑陋的部分是从表达式创建一个列表,只是为了映射它,然后只从列表中取出唯一的元素作为结果。
对于一种既要干净又优雅的声明来说似乎太多了。
为什么不分手呢
use constant PATT => do {
my $alt = join '|', qw(many cool strings);
qr/^ ($alt) (?: :(.+) )? $/x;
};
我觉得这个很好看?