Since we went to a lot of trouble to get lexical and closures to work correctly
in Perl 6, it seems fair to use it here:
$ cat rxstr
sub rxstr($s) { rx/<$s>/ }
my $str = 'foo';
my $foorx = rxstr($str); # create /foo/ regex
say 'foo' ~~ $foorx; # matches
$str = 'bar';
say 'foo' ~~ $foorx; # still matches... $foorx is unchanged
$ ./perl6 rxstr
「foo」
「foo」
And for a bit more golfing, there's:
my $str = 'foo';
my $foorx = { rx/<$^a>/ }.($str);
say 'foo' ~~ $foorx;
Pm
On Fri, May 12, 2017 at 01:01:17AM +0200, Timo Paulssen wrote:
> The only way that comes to mind is to use EVAL, but that's not
> golf-friendly at all.
>
> Perhaps you can find something sufficiently short based on .contains,
> .index, .starts-with, .ends-with, and friedns?