--- /dev/null
+#!/bin/bash
+
+##############
+
+# simple examples...
+
+declare -A snuggles
+ # make an associative array
+
+snuggles=([book]=petunia [muffets]="glasgow robbery")
+ # keys: book and muffets
+ # values: (second part)
+
+snuggles+=([morgower]=flimshaw)
+ # adding entries to it.
+
+echo ${!snuggles[x]}
+ # show index x's key.
+
+echo ${snuggles[x]}
+ # show index x's value.
+
+##############
+
+# excellent code from:
+# http://blog.spencertipping.com/2009/08/constant-time-associative-arrays-in-bash
+
+typeset -a table_keys
+typeset -a table_values
+
+function index_of_key () {
+ initial=$(($(echo $1 | md5sum | cut -c 18-32 | awk '{print "0x"$1}')))
+ while [[ ${table_keys[$initial]} && ${table_keys[$initial]} != $1 ]]; do
+ initial=$((initial + 1))
+ done
+ echo -n $initial
+}
+
+function associate () {
+ index=$(index_of_key $1)
+ table_keys[$index]=$1
+ table_values[$index]=$2
+ echo -n $2
+}
+
+function lookup () {
+ index=$(index_of_key $1)
+ echo -n ${table_values[$index]}
+}
+
+echo Associating foo with bar and bif with baz
+associate foo bar && echo
+associate bif baz && echo
+
+echo -n Looking up foo:
+lookup foo && echo
+
+echo -n Looking up bif:
+lookup bif && echo
+
+echo -n Looking up bar:
+lookup bar && echo
+
+##############
+