Version 1 of arrayval

Updated 2010-05-14 10:19:46 by MGS

MGS [2003/09/05] - A quick proc that works like parray, but returns the value instead of printing to stdout.

proc arrayval {array {pattern *}} {
  upvar $array a
  if { !array exists a } { error "\"$array\" isn't an array" }
  set lines list
  set max 0
  foreach name array names a $pattern {
    set len string length $name
    if { $len > $max } { set max $len }
  }
  set max expr {$max + [string length $array + 2}]
  foreach name array names a $pattern {
    set line format %s(%s) $array $name
    lappend lines format "%-*s = %s" $max $line $a($name)
  }
  return join [lsort $lines \n]
}

# example code
text .t
pack .t -expand 1 -fill both
.t insert end arrayval ::env

See also: