On Fri, 25 Oct 2002, I wrote:
> > why not simply extend pattern-matching in a similar way to substr, making it
> > an L-value, so that one gets
> > 
> >   $str ~ /[aeiou]+/ = "vowels($&)"
> > 
> > or
> > 
> >   $str ~ /\d/ {hyper-symbol}= (0) x {size-of-LHS-array};

On Thu, 24 Oct 2002, Larry Wall replied:
> Problem with that...the replacement argument has to be lazy, and currently
> the RHS of an assignment is actually evaluated before the left.  You'd
> really need something more like
> 
>     $str =~ /\d/ = { 0 }

How about just

    $str =~ /\d/ .= "0"

or

    $str =~ /\d/ .= { 1 + $_ .& 7 }

in which using "." (apply) would force a fetch of the LHS in advance of
evaluating the RHS. And for global-replace we could use the vector/hyper
notation:

    $str =~ /\d/ [.=] "0"

> However, I think readability suffers without a hint on the front what
> you're trying to do.

We don't in general have a "let" on the front of assignment statements; why
should this type of assignment be any different?  (Do we want a "let" keyword?
Personally I don't think so, but what do others think?)

-Martin

-- 
How to build a Caspian Sea oil pipeline - step one: get elected president...

Reply via email to