- Prev
- SystemTap Beginners Guide
- Next

## ⁠3.4. Associative Arrays

SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it.
Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as `global` variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of `awk`, and is as follows:

    array_name[index_expression]

Here, the `array_name` is any arbitrary name the array uses. The `index_expression` is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named `foo` that specifies the ages of three people `tom`, `dick`, and `harry` (which are unique keys). To assign them the ages (associated values) of 23, 24, and 25 respectively, we'd use the following array statements:
⁠

Example 3.13. Basic Array Statements

    foo["tom"] = 23
    foo["dick"] = 24
    foo["harry"] = 25

You can specify up to nine index expressions in an array statement, each one delimited by a comma (`,`). This is useful if you wish to have a key that contains multiple pieces of information. The following line from disktop.stp uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of `devname` with that key.

    device[pid(),execname(),uid(),ppid(),"W"] = devname

Important

All associate arrays must be declared as `global`, regardless of whether the associate array is used in one or multiple probes.

- Prev3.3.4. Command-Line Arguments
- Up
- Home
- Next3.5. Array Operations in SystemTap