Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: hzoli change: $foo:s//r/



In article "archive/latest/313", Zoltan Hidvegi wrote:
> Anthony Heading wrote:

> > hzoli changelog of Jul 10 says:
> > - $foo:s//r/ gives ... error message ... (194)
> > 
> > Now the following used to work
> > 
> > % array=(a b c d e)
> > % echo $array:s//\&-\&/
> > a-a b-b c-c d-d e-e

> Maybe we can find an other syntax for that.


In plain unmodified hzoli10.3 the unadorned backslash does exactly that.

$ ./zsh -fc 'echo $ZSH_VERSION
             array=(a b c d e)
             echo $array:s/\/\&-\&/
            '
2.6-beta10-hzoli10.3
a-a b-b c-c d-d e-e
$

Is this just another undocumented feature? Since there's no real need
to escape the delimiter--just choose a different one--the backslash 
seems one of the best choices to denote "substitute whole string/ele-
ments of array" to me. 


Sincere apologies for my GNUisms breaking hzoli10.2.
Please forgive me.
  Thorsten


BTW it is "substitution", isn't it?

--- zsh-2.6-beta10-hzoli10.3/Src/subst.c.orig	Wed Aug 16 00:46:45 1995
+++ zsh-2.6-beta10-hzoli10.3/Src/subst.c	Wed Aug 16 01:23:57 1995
@@ -905,7 +905,7 @@
 		*str = aptr + 1;
 		return n;
 	    } else {
-		zerr("bad subtitution", NULL, 0);
+		zerr("bad substitution", NULL, 0);
 		return NULL;
 	    }
 	else
@@ -1465,7 +1467,7 @@
 		del = *ptr1++;
 		for (ptr2 = ptr1; *ptr2 != del && *ptr2; ptr2++);
 		if (!*ptr2) {
-		    zerr("bad subtitution", NULL, 0);
+		    zerr("bad substitution", NULL, 0);
 		    return;
 		}
 		*ptr2++ = '\0';

-- 
Thorsten Meinecke
<kaefer@xxxxxxxxxxxxxxx>



Messages sorted by: Reverse Date, Date, Thread, Author