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: