# The Match Operator in Perl

PERLServer Side ProgrammingProgramming Scripts

The match operator m// in Perl, is used to match a string or statement to a regular expression. For example, to match the character sequence "foo" against the scalar $bar, you might use a statement like this − ## Example Live Demo #!/usr/bin/perl$bar = "This is foo and again foo";
if ($bar =~ /foo/) { print "First time is matching\n"; } else { print "First time is not matching\n"; }$bar = "foo";
if ($bar =~ /foo/) { print "Second time is matching\n"; } else { print "Second time is not matching\n"; } When above program is executed, it produces the following result − First time is matching Second time is matching The m// actually works in the same fashion as the q// operator series.you can use any combination of naturally matching characters to act as delimiters for the expression. For example, m{}, m(), and m>< are all valid. So above example can be re-written as follows − #!/usr/bin/perl$bar = "This is foo and again foo";
if ($bar =~ m[foo]) { print "First time is matching\n"; } else { print "First time is not matching\n"; }$bar = "foo";
if ($bar =~ m{foo}) { print "Second time is matching\n"; } else { print "Second time is not matching\n"; } You can omit m from m// if the delimiters are forward slashes, but for all other delimiters you must use the m prefix. Note that the entire match expression, that is the expression on the left of =~ or !~ and the match operator, returns true (in a scalar context) if the expression matches. Therefore the statement − $true = ($foo =~ m/foo/); will set$true to 1 if $foo matches the regex, or 0 if the match fails. In a list context, the match returns the contents of any grouped expressions. For example, when extracting the hours, minutes, and seconds from a time string, we can use − my ($hours, $minutes,$seconds) = ($time =~ m/(\d+):(\d+):(\d+)/); ## Match Operator Modifiers in Perl The Perl match operator supports its own set of modifiers. The /g modifier allows for global matching. The /i modifier will make the match case insensitive. Here is the complete list of modifiers Sr.NoModifier & Description 1i Makes the match case insensitive. 2m Specifies that if the string has newline or carriage return characters, the ^ and$ operators will now match against a newline boundary, instead of a string boundary.
3o
Evaluates the expression only once.
4s
Allows use of . to match a newline character.
5x
Allows you to use white space in the expression for clarity.
6g
Globally finds all matches.
7cg