manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Functions Summary,  Prev: Indirect Calls,  Up: Functions

9.4 Summary
===========

   * 'awk' provides built-in functions and lets you define your own
     functions.

   * POSIX 'awk' provides three kinds of built-in functions: numeric,
     string, and I/O. 'gawk' provides functions that sort arrays, work
     with values representing time, do bit manipulation, determine
     variable type (array versus scalar), and internationalize and
     localize programs.  'gawk' also provides several extensions to some
     of standard functions, typically in the form of additional
     arguments.

   * Functions accept zero or more arguments and return a value.  The
     expressions that provide the argument values are completely
     evaluated before the function is called.  Order of evaluation is
     not defined.  The return value can be ignored.

   * The handling of backslash in 'sub()' and 'gsub()' is not simple.
     It is more straightforward in 'gawk''s 'gensub()' function, but
     that function still requires care in its use.

   * User-defined functions provide important capabilities but come with
     some syntactic inelegancies.  In a function call, there cannot be
     any space between the function name and the opening left
     parenthesis of the argument list.  Also, there is no provision for
     local variables, so the convention is to add extra parameters, and
     to separate them visually from the real parameters by extra
     whitespace.

   * User-defined functions may call other user-defined (and built-in)
     functions and may call themselves recursively.  Function parameters
     "hide" any global variables of the same names.  You cannot use the
     name of a reserved variable (such as 'ARGC') as the name of a
     parameter in user-defined functions.

   * Scalar values are passed to user-defined functions by value.  Array
     parameters are passed by reference; any changes made by the
     function to array parameters are thus visible after the function
     has returned.

   * Use the 'return' statement to return from a user-defined function.
     An optional expression becomes the function's return value.  Only
     scalar values may be returned by a function.

   * If a variable that has never been used is passed to a user-defined
     function, how that function treats the variable can set its nature:
     either scalar or array.

   * 'gawk' provides indirect function calls using a special syntax.  By
     setting a variable to the name of a function, you can determine at
     runtime what function will be called at that point in the program.
     This is equivalent to function pointers in C and C++.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.