http://www.perlmonks.org?node_id=1008916

nonsequitur has asked for the wisdom of the Perl Monks concerning the following question:

I have been trying to use the regex substitution modifier "r" to work with no success. I finally tried running the examples from perlrequick and cannot get them to work either. This example is from the section titled "The non-destructive modifier s///r".

$x = "I like dogs."; $y = $x =~ s/dogs/cats/r; print "$x $y\n"; # prints "I like dogs. I like cats."

When I run it I get this error.I get the same error using strict and declaring the variables.

Bareword found where operator expected at r.pl line 2, near "s/dogs/ca +ts/r" syntax error at r.pl line 2, near "s/dogs/cats/r"

Can anyone tell me what's wrong?

Replies are listed 'Best First'.
Re: Regex substitution modifier /r
by davido (Cardinal) on Dec 15, 2012 at 00:35 UTC

    Type perl -v.

    The /r feature was introduced in Perl 5.14.0: perl5140delta.


    Dave

Re: Regex substitution modifier /r
by toolic (Bishop) on Dec 15, 2012 at 00:40 UTC
    That syntax was introduced in version perl5140delta. You need to upgrade if you want to use it.
Re: Regex substitution modifier /r
by Anonymous Monk on Dec 15, 2012 at 04:34 UTC
    If you read about it in your local perlrequick, then you must have two perl's in your $PATH -- use the newer one, with the bigger version number :)
Re: Regex substitution modifier /r
by nonsequitur (Pilgrim) on Dec 15, 2012 at 09:41 UTC

    Thank you all for your help. I did not notice that I had not updated my path. It is working now.