I'm trying to match a simple string against a regular expression pattern using the smartmatch operator:
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use open qw(:std :utf8);
my $name = qr{/(\w+)/};
my $line = 'string';
print "ok\n" if $line ~~ /$name/;
I expect this to print "ok", but it doesn't. Why not?
Remove the slashes from your regex:
my $name = qr{(\w+)};
Since you're wrapping the regular expression in qr{}, everything inside the braces is being interpreted as the regular expression. Therefore, if you were to expand out your search, it'd be:
print "ok\n" if $line ~~ /\/(\w+)\//;
Since your string doesn't start or end with slashes (or have any substrings that do), then the match fails, and you don't print ok.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With