From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27332 invoked from network); 18 Jan 2004 02:59:53 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 18 Jan 2004 02:59:53 -0000 Received: (qmail 16942 invoked by alias); 18 Jan 2004 02:59:46 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 19383 Received: (qmail 16803 invoked from network); 18 Jan 2004 02:59:45 -0000 Received: from localhost (HELO sunsite.dk) (127.0.0.1) by localhost with SMTP; 18 Jan 2004 02:59:45 -0000 X-MessageWall-Score: 0 (sunsite.dk) Received: from [204.127.202.55] by sunsite.dk (MessageWall 1.0.8) with SMTP; 18 Jan 2004 2:59:45 -0000 Received: from naz.lickey.com (12-228-204-188.client.attbi.com[12.228.204.188]) by comcast.net (sccrmhc11) with ESMTP id <2004011802594401100jhvr4e>; Sun, 18 Jan 2004 02:59:44 +0000 Received: by naz.lickey.com (Postfix, from userid 1000) id AFF8C189CC; Sat, 17 Jan 2004 18:59:43 -0800 (PST) To: zsh-workers@sunsite.dk Subject: Re: Is there an idiom for converting an array to an associative array? References: <87vfndnnwe.fsf@naz.lickey.com> <1040116042310.ZM28857@candle.brasslantern.com> From: Matt Armstrong Date: Sat, 17 Jan 2004 18:59:43 -0800 In-Reply-To: <1040116042310.ZM28857@candle.brasslantern.com> (Bart Schaefer's message of "Fri, 16 Jan 2004 04:23:10 +0000") Message-ID: <87oet2neqo.fsf@naz.lickey.com> User-Agent: Gnus/5.110002 (No Gnus v0.2) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Bart Schaefer writes: > On Jan 15, 9:05am, Matt Armstrong wrote: > } > } I'm looking for an idiom that will convert the array (a b c) into > } (a "" b "" c "") so I can assign it easily to an associative array. > > As it happens ... > > typeset "assoc[${^array[@]}]=''" > > should do that particular thing quite effectively, provided that none > of the values of $array is * or @. Thanks, I'll give it a whirl, and then study it for a couple of hours to figure out how it works. :-) > } Right now I've got ugliness like this: > } > } array=(a b c) > } set -A assoc > > That should be "typeset -A assoc". "set -A" means something entirely > different. I jumped to "To create an empty array (including associative arrays)" in the text below: Associative arrays must be declared before assignment, by using: typeset -A name When name refers to an associative array, the list in an assignment is interpreted as alternating keys and values: set -A name key value ... name=(key value ...) Every key must have a value in this case. Note that this assigns to the entire array, deleting any elements that do not appear in the list. To create an empty array (including associative arrays), use one of: set -A name name=() This is from Debian Linux's packaging of zsh 4.0.8 -- matt