On 3/23/2008 6:16 PM, Rajan wrote:
[please don't top-post, fixed below]
>
> "Hermann Peifer" <peifer@[EMAIL PROTECTED]
> wrote in message
> news:47DBAE29.4050709@[EMAIL PROTECTED]
>
>>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
>
> You cannot pass an array as an argument to a function.
Of course you can.
> However, variables in
> awk are in general global, so you can use the actual variable name in
the
> function.
That doesn't help when you're performing the same operation on multiple
variables.
Ed.


|