用运算符进行正则表达式匹配。在scalar上下文中,=~ m//在成功时返回true,而失败是返回false。

    圆括号表示匹配组,匹配成功以后,匹配组被填入内置变量$1$2$3……:

    1. print $1; # "Hello"
    2. print $2; # "world"

    在列表上下文中,=~ m//返回$1$2……组成的列表。

    1. my $string = "Good morning world";
    2. $string =~ s/world/Vietnam/;

    请注意$string的内容发生了怎样的改变。你必须在=~ s///运算符左边提供一个scalar变量,如果你提供了字面字符串,会返回一个错误。

    /g标志表示“全局匹配”(译者注:原文“group match”,应为“global match”更为确切)。

    在scalar上下文中,每次=~ m//g调用都会返回下一个匹配项,成功是返回true,而失败时返回false。然后你还是可以通过$1等等来得到匹配的组。例如:

    1. print join ", ", map { "'".$_."'" } @matches;

    每次=~ s///g调用会进行一次全局的查找/替换,并且返回匹配的次数。在这里,我们把所有元音字母用字母“r”替代。

    /i标志表示查找替换对于大小写不敏感。

    /x标志允许正则表达式中包含空白符(例如换行符)和注释。

    1. "Hello world" =~ m/
    2. (\w+) # one or more word characters
    3. world # literal "world"
    4. /x;
    5. # returns true