bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fwd: Gawk length(array) bug]


From: Hermann Peifer
Subject: [Fwd: Gawk length(array) bug]
Date: Sat, 15 Mar 2008 16:21:19 +0100
User-agent: Thunderbird 2.0.0.12 (Windows/20080213)

See below. Regards, Hermann

-------- Original Message --------
Subject: Re: Gawk length(array) question
Date: Sat, 15 Mar 2008 08:02:03 -0500
From: Ed Morton <address@hidden>
Newsgroups: comp.lang.awk
References: <address@hidden>

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.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]