From: "John W. Krahn" <[EMAIL PROTECTED]>
> Pavle Lukic wrote:
> > Problem
> > Given a string and a pattern, construct new string
> > by removing part of the string equal to pattern.
> > Remove only first occurrence of the pattern.
> > 
> > Problem solutions
> > 
> > Solution #1 ($x = $a) =~ s/\Q$b//;
> > 
> > Solution #2  $x =
> > substr($a,0,index($a,$b)).substr($a,index($a,$b)+length($b));
> 
> Too complicated.  :-)
> 
> substr $x = $a, index( $a, $b ), length( $b ), '';
> 
> John

Too obfuscated. Very few people would have any chance understanding 
what's going on in this statement.

This
        $x = $a;
        substr $x, index( $a, $b ), length( $b ), '';
should not be much slower (if at all) yet it's much easier to read.

perldoc -f substr
    substr EXPR,OFFSET,LENGTH,REPLACEMENT
    substr EXPR,OFFSET,LENGTH
    substr EXPR,OFFSET
            Extracts a substring out of EXPR and returns it. First 
character
            is at offset "0", or whatever you've set "$[" to (but 
don't do
            that). If OFFSET is negative (or more precisely, less 
than
            "$["), starts that far from the end of the string. If 
LENGTH is
            omitted, returns everything to the end of the string. If 
LENGTH
            is negative, leaves that many characters off the end of 
the
            string.
        ...
            An alternative to using substr() as an lvalue is to 
specify the
            replacement string as the 4th argument. This allows you 
to
            replace parts of the EXPR and return what was there 
before in
            one operation, just as you can with splice().


P.S.: If you really wanted to keep this as a single command I'd 
recommend adding some parens:
        substr ($x = $a, index( $a, $b ), length( $b ), '');
or
        substr (($x = $a), index( $a, $b ), length( $b ), '');
so that it's clear what's being assigned to the $x.

Plus I find
        substr (($x = $a), index( $a, $b ), length( $b )) = '';
slightly easier to read.

Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to