Interpolate a variable into a regular expression

Viewed 652

I am used to Perl but a Perl 6 newbie

I want to host a regular expression in a text variable, like I would have done in perl5:

my $a = 'abababa';
my $b = '^aba';
if ($a =~ m/$b/) {
        print "True\n";
} else {
        print "False\n";
}

But if I do the same in Perl6 it doesn't work:

my $a = 'abababa';
my $b = '^aba';

say so $a ~~ /^aba/;  # True
say so $a ~~ /$b/;    # False

I'm puzzled... What am I missing?

2 Answers

Is there a reason why you don't pick the regex object for these types of uses?

my $a = 'abababa';
my $b = rx/^aba/;

say so $a ~~ /^aba/;  # True
say so $a ~~ $b;     # True
Related