Patrick (>), Carl (>>): >> r30590: >> $ ./perl6 -e 'regex a { b }; "b" ~~ a' >> too few arguments passed (0) - 2 params expected >> [...] >> >> I've also added tests for this in t/spec/S05-metasyntax/regex.t. >> >> (S05 is not entirely clear as to whether this should actually work. >> IMHO, there's noreason for it not to. Storing anonymous regexes in >> scalar variables already works.) >> >> $ ./perl6 -e 'my $a = regex { b }; say "b" ~~ $a' >> b > > For now I'm going to claim that Rakudo has this one correct. The > difference between the first and second examples above is that in > the scalar variable example, the $a variable passed to infix:<~~> > contains the regex sub itself, whereas in the first example the > a regex is being invoked as a 0-argument listop prior to calling > the smart match. > > In other words, the correct syntax is to use &a, as in: > > $ ./parrot perl6.pbc -e 'regex a { b }; say "b" ~~ &a;' > b > > By way of analogy: > > sub foo($x) { $x eq 'b' } > > say "b" ~~ foo; # wrong, sub foo called as 0-arg listop > say "b" ~~ &foo; # right, sub foo passed to infix:<~~>
That does make sense. Thank you. // Carl