this question的延续,可能更奇怪。
我可以吗使用regexes
连接两个sub
?
(当然,我理解,如何使用regex
)
以下代码完全错误,但我希望它可以解释我想要做的事情:
my Regex sub s12 ( $c, $v) {
return / <{$c}> <{$v}> /
}
my regex consonant { <[a .. z] -[aeiou]> }
my regex vowel { <[aeiou]> }
my regex open_syllable { &s12( &consonant, &vowel ) }
"bac" ~~ m:g/ <open_syllable> /;
say $/; # should be 'ba'
答案 0 :(得分:5)
你写的内容基本上是正确的,但你需要稍微调整一下语法。首先,您应该像任何其他子声明您的组合功能。接下来,似乎将正则表达式插入另一个,<$r>
是正确的语法,并且将函数调用插入到正则表达式中,<{my-sub(args)}>
是正确的语法。 (在调用时,不需要在sub前加上&符号 - &
主要用于在不调用它的情况下引用Callable
。)结合这些小修补程序并使用代码:
sub combine(Regex $a, Regex $b --> Regex) {
/ <$a> <$b> /
}
my regex consonant { <[a .. z] -[aeiou]> }
my regex vowel { <[aeiou]> }
my regex open_syllable { <{combine(&consonant, &vowel)}> }
"bac" ~~ m:g/ <open_syllable> /;
say ~$/; # output: ba