Posted to tcl by mr_calvin at Tue Aug 01 13:17:16 GMT 2017view raw

  1. proc spunk {l} {
  2. set flds [dict create]
  3. foreach {f v} $l {
  4. if {![string is list $v] || [llength $v]==1} {
  5. dict lappend flds $f $v
  6. } else {
  7. dict lappend flds $f {*}$v
  8. }
  9. }
  10. return $flds
  11. }
  12.  
  13. set x1 "-a {\{}c} -x 1 -z 3"
  14. set x2 "-a {\{}c} -x 1 -z 3 -a {2 3}"
  15.  
  16. dict get [spunk $x2] -a; # {\{}c} 2 3; ok
  17. dict get [spunk $x1] -a; # {{}c}
  18. dict get $x1 -a; # {}c
  19.