It must be the case that both m{} and qr{} are *both* pattern matches.
No. Read qr's documentation. It does not perform any matching. It simply compiles a pattern.
Isn't a "pattern match" a "regular expression pattern"?
Matching is the action of checking if something is consistent with a definition.
A pattern is a definition of a set of strings.
Binary "=~" binds a *scalar expression* to a *pattern match*.
Indeed it does. These matching operators are m//, s/// and tr///. If you don't use one of these explicitly, you are using m// implicitly.
$x =~ m// => $x =~ m// $x =~ s/// => $x =~ s/// $x =~ tr/// => $x =~ tr/// $x =~ EXPR ~> $x =~ do { my $anon = EXPR; m/$anon/ }
This means that all of the following are functionally equivalent:
$x =~ m/abc/ $x =~ qr/abc/ $x =~ q/abc/ $x =~ qq/abc/ $x =~ qx/echo abc/ $x =~ 'abc' $x =~ "abc" $x =~ sub { "abc" }->()
What it doesn't mean is that all operators perform regex pattern matching. qr/abc/g makes no more sense than qq/abc/g.
In reply to Re^3: 'g' flag w/'qr'
by ikegami
in thread 'g' flag w/'qr'
by perl-diddler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |