Learning Perl: 8.4. The Binding Operator, =~

Previous Page
Next Page

 

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";
    }

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";
      ...
    }

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;

Previous Page
Next Page
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值