Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Fwd: Gawk length(array) bug]

0 views
Skip to first unread message

Hermann Peifer

unread,
Mar 15, 2008, 11:21:19 AM3/15/08
to bug-...@gnu.org, Aharon Robbins
See below. Regards, Hermann

-------- Original Message --------
Subject: Re: Gawk length(array) question
Date: Sat, 15 Mar 2008 08:02:03 -0500
From: Ed Morton <mor...@lsupcaemnt.com>
Newsgroups: comp.lang.awk
References: <47DBAE29...@gmx.eu>

On 3/15/2008 6:08 AM, Hermann Peifer wrote:
> Hi All,
>
> The Gawk man page says:
> > Starting with version 3.1.5, as a non-standard extension,
> > with an array argument, length() returns the number
> > of elements in the array.
>
> It looks like Gawk's length(array) extension does not work inside
> functions. Is this a bug or feature or am I missing something? See the
> example below. I am using GNU Awk 3.1.6
>
> $ cat testdata
> CD NAME
> AT Austria
> BG Bulgaria
> CH Switzerland
> DE Germany
> EE Estonia
> FR France
> GR Greece
>
> $ cat test.awk
>
> # Populate array
> NR > 1 { array[$1] = $2 }
>
> # Print array length and call function A
> END { print "array:",length(array) ; A(array) }
>
> function A(array_A) { print "array_A:", length(array_A) }
>
> $ gawk -f test.awk testdata
> array: 7
> gawk: test.awk:8: (FILENAME=data FNR=8) fatal: attempt to use array
> `array_A (from array)' in a scalar context
>
> BTW, there is no such error if I have asort(array_A) or asorti(array_A)
> inside the function.
>
> Hermann

I get the same result with gawk 3.1.6 for cygwin. Obviously you can work
around
it since asort() returns the number of elements in an array just like
length()
is supposed to (or "for (i in array) lgth++" if you don't want to be
gawk-specific) but it does seem like a bug. Anyone know if there's a list of
known gawk bugs on-line somewhere?

Ed.


0 new messages