微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Learning Perl: 8.4. The Binding Operator, =~

@H_502_6@

Previous Page

Next Page

 

@H_502_6@

8.4. The Binding Operator,=~

Matching against $_ is merely the default; the binding operator (=~) tells Perl to match the pattern on the right against the string on the left,instead of matching against $_.[

] For example:

[

] The binding operator is used with some other operations besides the pattern match,as you'll see later.

    my $some_other = "I dream of betty rubble.";
    if ($some_other =~ //brub/) {
      print "Aye,there's the rub./n";
    }@H_502_45@ 

The first time you see it,the binding operator looks like some kind of assignment operator,but it's not. It is saying,"This pattern match that would attach to $_ by defaultmake it work with this string on the left instead." If there's no binding operator,the expression is using $_ by default.

In the (somewhat unusual) example below,$likes_perl is set to a Boolean value according to what the user typed at the prompt. This is a little on the quick-and-dirty side because the line of input itself is discarded. This code reads the line of input,tests that string against the pattern,and discards the line of input.[*] It doesn't use or change $_ at all.

[*] The line of input is not automatically stored into $_ unless the line-input operator (<STDIN>) is alone in the conditional expression of a while loop.

    print "Do you like Perl? ";
    my $likes_perl = (<STDIN> =~ //byes/b/i);
    ...  # Time passes...
    if ($likes_perl) {
      print "You said earlier that you like Perl,so.../n";
      ...
    }@H_502_45@ 

Because the binding operator has fairly high precedence,the parentheses around the pattern-test expression aren't required,so the following line does the same thing as the one aboveit stores the result of the test (and not the line of input) into the variable:

    my $likes_perl = <STDIN> =~ //byes/b/i;@H_502_45@ 
@H_502_6@

Previous Page

Next Page

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐