From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22085 invoked from network); 16 Apr 1999 09:04:55 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 16 Apr 1999 09:04:55 -0000 Received: (qmail 1879 invoked by alias); 16 Apr 1999 09:04:33 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6051 Received: (qmail 1872 invoked from network); 16 Apr 1999 09:04:31 -0000 From: "Bart Schaefer" Message-Id: <990416020418.ZM13627@candle.brasslantern.com> Date: Fri, 16 Apr 1999 02:04:18 -0700 In-Reply-To: <000d01be87dd$961a9800$21c9ca95@mowp.siemens.ru> Comments: In reply to "Andrej Borsenkow" "RE: BUG: zsh-3.1.5-pws-14: parameter expansion not working properly" (Apr 16, 11:48am) References: <000d01be87dd$961a9800$21c9ca95@mowp.siemens.ru> X-Mailer: Z-Mail (4.0b.820 20aug96) To: Subject: Re: BUG: zsh-3.1.5-pws-14: parameter expansion not working properly MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Apr 16, 11:48am, Andrej Borsenkow wrote: } Subject: RE: BUG: zsh-3.1.5-pws-14: parameter expansion not working proper } } It is *impossible* to split array elements. It is no joke. Arrays are joined } together before splitting - so, the result I get is much much different. } } Subsequent splitting on IFS does not help, as it can change "too much" } } May be, nobody really needs it (I missed it time to time). And may be, there } is always workaround. But it is really really weird ... The obvious workaround is to explicitly join and then split: zsh% foo=(a:b x:y) zsh% print -l ${(j/:/s/:/)foo} a b x y One might however argue that this looks odd: zsh% print -l ${(s/:/j/:/)foo} a b x y The flags are always applied in an internally-defined order, not in the order they appear in the flag list. But flag list ordering does matter if you happen to repeat a flag: zsh% print -l ${(s/:/s/ /)foo} a:b x:y All that aside, a desirable (?) effect of the current interpretation is that join reverses split (except for the initial array-to-scalar change): zsh% print -l ${(j/:/)${(s/:/)foo}} a:b x:y With your interpretation, this would yield a:b:x:y. Of course, since split can't logically reverse join, maybe it's not necessary that join be capable of reversing split. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com