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

Re: Mapping split ${(s::)...} across an array



On Thu, 03 Dec 2015 08:00:08 -0800
Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
> I recently had a situation where I wanted to create a new array by splitting
> every element of an existing array.  The only solution I came up with was
> to first join the original array into a string using the same character I
> wanted to use to split the individual elements.
> 
> Is there another way?  :s// and similar replacements are mapped across an
> array by definition, but that doesn't help (does it?).

I think the normal split logic currently always implies joining first
and always has done, though I don't remember the original rationale.
I guess we could add a "_" flag to change this.  (I was wondering if we
could do the parsing of that -- currently unused --- in a slightly more
flexible manner, but I've forgotten quite what I was thinking...)

(z) doesn't, but you are constrained to use normal word splitting, and I
think this is at the level below IFS is relevant.  But if you can
arrange to use space as the character, and arrage to quote it
elsewhere (you have quoting problems with any split character) that
might be a possibility.  There are other possible hacks if you can use
white space.

pws



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