====== proc ?lappend {v_name args} { upvar $v_name v if {![info exists v]} { return -code error "expected $v_name to exist!" } if {[array exists v]} { return -code error "can't set \"$v_name\": variable is array" } foreach val $args { lappend v $val } return $v } ====== [MG] - How does this differ from ''lappend''? Unless I'm missing something (quite possible;) it seems to work exactly the same. . . [schlenk] - It errors out if the var does not exist. The original ''lappend'' does not, it creates the variable. ---- See also [?set],[?append] <> Command