Front page | perl.perl5.porters |
Postings from August 2009
Re: [perl #68804] underscore regex delimiters
Thread Previous
|
Thread Next
From:
Rafael Garcia-Suarez
Date:
August 30, 2009 05:42
Subject:
Re: [perl #68804] underscore regex delimiters
Message ID:
b77c1dce0908300542r129cdb1dw61aaeb69508ee3aa@mail.gmail.com
Thanks, applied to bleadperl.
2009/8/30 David Nicol <davidnicol@gmail.com>:
>> I think we agree that the documentation needs to be improved.
>>
>> Nicholas Clark
>
> diff --git a/pod/perlop.pod b/pod/perlop.pod
> index 0170202..26d0f1e 100644
> --- a/pod/perlop.pod
> +++ b/pod/perlop.pod
> @@ -1167,11 +1167,13 @@ process modifiers are available:
> c Do not reset search position on a failed match when /g is in effect.
>
> If "/" is the delimiter then the initial C<m> is optional. With the C<m>
> -you can use any pair of non-alphanumeric, non-whitespace characters
> +you can use any pair of non-whitespace characters
> as delimiters. This is particularly useful for matching path names
> that contain "/", to avoid LTS (leaning toothpick syndrome). If "?" is
> the delimiter, then the match-only-once rule of C<?PATTERN?> applies.
> If "'" is the delimiter, no interpolation is performed on the PATTERN.
> +When using a character valid in an identifier, whitespace is required
> +after the C<m>.
>
> PATTERN may contain variables, which will be interpolated (and the
> pattern recompiled) every time the pattern search is evaluated, except
> @@ -1381,13 +1383,13 @@ specific options:
> e Evaluate the right side as an expression.
> ee Evaluate the right side as a string then eval the result
>
> -Any non-alphanumeric, non-whitespace delimiter may replace the
> -slashes. If single quotes are used, no interpretation is done on the
> -replacement string (the C</e> modifier overrides this, however). Unlike
> -Perl 4, Perl 5 treats backticks as normal delimiters; the replacement
> -text is not evaluated as a command. If the
> -PATTERN is delimited by bracketing quotes, the REPLACEMENT has its own
> -pair of quotes, which may or may not be bracketing quotes, e.g.,
> +Any non-whitespace delimiter may replace the slashes. Add space after
> +the C<s> when using a character allowed in identifiers. If single quotes
> +are used, no interpretation is done on the replacement string (the C</e>
> +modifier overrides this, however). Unlike Perl 4, Perl 5 treats backticks
> +as normal delimiters; the replacement text is not evaluated as a command.
> +If the PATTERN is delimited by bracketing quotes, the REPLACEMENT has
> +its own pair of quotes, which may or may not be bracketing quotes, e.g.,
> C<s(foo)(bar)> or C<< s<foo>/bar/ >>. A C</e> will cause the
> replacement portion to be treated as a full-fledged Perl expression
> and evaluated right then and there. It is, however, syntax checked at
> diff --git a/t/op/subst.t b/t/op/subst.t
> index 06c04e8..fe03599 100755
> --- a/t/op/subst.t
> +++ b/t/op/subst.t
> @@ -7,7 +7,7 @@ BEGIN {
> }
>
> require './test.pl';
> -plan( tests => 139 );
> +plan( tests => 140 );
>
> $x = 'foo';
> $_ = "x";
> @@ -263,6 +263,9 @@ eval 's{foo} # this is a comment, not a delimiter
> {bar};';
> ok( ! @?, 'parsing of split subst with comment' );
>
> +$snum = eval '$_="exactly"; s sxsys;m 3(yactl)3;$1' #68804
> +ok( $snum eq 'yactl', 'alpha delimiters are allowed' );
> +
> $_="baacbaa";
> $snum = tr/a/b/s;
> ok( $_ eq "bbcbb" && $snum == 4,
Thread Previous
|
Thread Next