Previous: Return Statement, Up: User-defined   [Contents][Index]

9.2.5 Functions and Their Effects on Variable Typing

awk is a very fluid language. It is possible that awk can’t tell if an identifier represents a scalar variable or an array until runtime. Here is an annotated sample program:

function foo(a)
    a[1] = 1   # parameter is an array

    b = 1
    foo(b)  # invalid: fatal type mismatch

    foo(x)  # x uninitialized, becomes an array dynamically
    x = 1   # now not allowed, runtime error

In this example, the first call to foo() generates a fatal error, so awk will not report the second error. If you comment out that call, though, then awk does report the second error.

Usually, such things aren’t a big issue, but it’s worth being aware of them.