/patten/ is a default style of RE, it's actually m/patten/.
Only use / the 'm' can be missing, otherwise 'm' must be there.
 
m{patten}
m|patten|
m(patten)
m[patten]
m#patten#
m*patten*
m%patten%
 
If we want use '^http://' as a patten, it's better not use '/'
 
m{^http://} is good, otherwise we must write /^http:\/\//
 
There're some symbol called 'flag' can control the matching of patten, such as /i /s /x
 
/i makes patten case insensitive.
 
print "Would you like to play a game? ";
chomp($_=<STDIN>);
if(/yes/i){
 print "In that case, I recommend that you go bowling.\n";
}
 
/s makes '.' match any character including "\n".
 
$_="I saw Barney\ndown at the bowling alley\nwith fred\nlast night.\n";
if(/Barney.*fred/s){
 print "That string mentions fred after Barney!\n";
}
 
/x makes space characters can be added into patten, just fit for human reading. The #comments can also added in patten with /x
 
/ -? \d+ /.? \d* /x
 
/
 -? # 0 or 1 '-'
 \d+ # 1 or more number
 \.? # 0 or 1 '.'
 \d* # 0 or more number
/x
 
/i /s /x can be used together, the order makes no difference.
 
if(/barney.*fred/is){
 print "That string mentions Fred after Barney!\n";
}
 
^ matches the beginning of string, $ matches the end of string including "\n", /^fred$/ matches "fred" and "fred\n"
 
\b matches the edge of "words", "words" in Perl means \w+ that is [A-Za-z0-9_]+
 
Patten operates $_ be default, =~ makes it operate other strings.
 
my $some_other="I dream of betty rubble.";
if($some_other=~/\brub/){
 print "Hey, there's the rub.\n";
}