On Thu, 24 Oct 2002, Damian Conway wrote:
: Adam D. Lopresto wrote:
: 
: > Really what I've been wishing for was an operator (or whatever) to let me do an
: > s// without changing the variable.
: 
: I would hope/expect that that's what the subroutine form of C<s> would do.

The problem with defining that as the primitive behavior is that some substitutions
are very much faster in place, and it would be difficult to capture.

: That is, it takes a string, a pattern, and a replacement string,
: and returns a new string with substitution performed (without affecting
: the original string):
: 
:       print 'He said "$( s($statement,/\.$/,"") )", but we didn't believe him.';

It's possible the syntax for substitution should be wrapped around the syntax
for matching, whatever that turns out to be.

    replace($statement =~ /\.$/,  "")
    replace($statement like /\.$/,  "")

or even:

    replace($statement like /\.$/, with => "")

We shouldn't limit our notions to strings:

    replace(@array like 1|2|3, $& + 1);

or if @array is the topic

    replace(1|2|3, $& + 1)

It's not yet clear where in-place vs en-passant fits in here.
Perhaps there's two different functions, spliting replace into
"inplace" and "outplace".  :-)

I'm sure there are better words with the right connotations though.

Larry

Reply via email to