Hi Josh,

Thanks for the response.

>From the output below, I see that we do have the arrary elements with the
strings as index created. But, an extra array member is being created for
every multidimensional associative array.

$ echo "${.sh.version}"
Version JM 93u 2011-02-08
$ typeset -A foo
$ typeset -A foo[bar]
$ typeset -A foo[baz]
$ foo[bar][cat]=1
$ foo[bar][dog]=2
$ foo[baz][mouse]=3
$ foo[baz][fish]=4
$ set | fgrep foo
_='foo[baz]'
foo=([bar]=([0]='' [cat]=1 [dog]=2) [baz]=([0]='' [fish]=4 [mouse]=3) )
$


But with the alpha release, I don't see the extra element.

$ echo "${.sh.version}"
Version AIJMP 93v- 2013-10-08
$ typeset -A foo
$ typeset -A foo[bar]
$ typeset -A foo[baz]
$ foo[bar][cat]=1
$ foo[bar][dog]=2
$ foo[baz][mouse]=3
$ foo[baz][fish]=4
$ set | fgrep foo
_='foo[baz]'
foo=([bar]=([cat]=1 [dog]=2) [baz]=([fish]=4 [mouse]=3) )
$

So it looks to me that ksh93 does support the associative arrays with more
than one dimension.

Am I missing something here?

Thanks,
~gmr



On Thu, Nov 14, 2013 at 3:16 PM, Joshuah Hurst <[email protected]> wrote:

> On Thu, Nov 14, 2013 at 8:26 AM, Mohan Gorai <[email protected]> wrote:
> > Hi ,
> >
> > I'm using to ksh93 scripts in my application to do various jobs . while
> > using double associative arrays i found the below :
> >
> > # typeset -A foo
> > # typeset -A foo[bar]
> > # typeset -A foo[baz]
> > # foo[bar][cat]=1
> > # foo[bar][dog]=2
> > # foo[baz][mouse]=3
> > # foo[baz][fish]=4
> > # set | fgrep foo
> > _='foo[baz]'
> > foo=([bar]=([cat]=1 [dog]=2) [baz]=([0]='' [fish]=4 [mouse]=3) )
> >
> > <<== foo[baz][0] is inserted unexpectedly
> >
> > Found that it's being fixed in alpha release as part of the below
> >
> > 12-08-20  A bug in which creating a two dimemsional associative array
> could
> >  add an extra 0 element to the second subscript has been fixed.
> >
> > could someone help me the patch file so that i can patch my binary
> > accordingly .
>
> ksh93 does not support multidimensional associative arrays.
> Only indexed multidimensional arrays are supported. If you wish to do
> the same for associative arrays just append the strings.
>
> The 12-08-20 issue you're referring to was a bug which tried to create
> multidimensional indexed arrays using string as index, which are
> equivalent to the arithmetic value 0 if they are not defined variables
> yet and set -o nounset was not set.
>
> Arguably the right fix here is that ksh93 should throw an error if
> someone tried to use an associative array with more than one
> dimension.
>
> Josh
>
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers

Reply via email to