Posted to tcl by aspect at Mon Jun 17 22:24:47 GMT 2013view raw

  1. #!/usr/bin/tclsh
  2. #
  3.  
  4. set i [interp create -safe]
  5.  
  6. foreach cmd [$i eval {info commands}] {
  7. puts "Hiding $cmd"
  8. $i hide $cmd
  9. }
  10. $i alias unknown metatcl $i
  11.  
  12. proc metatcl {i cmd args} {
  13. puts "Invoked in child: $cmd $args"
  14. if {$cmd in {"set" "incr" "for" "while" "foreach"}} {
  15. return [$i invokehidden $cmd {*}$args]
  16. } else {
  17. return [$cmd {*}$args]
  18. }
  19. }
  20.  
  21. $i eval {
  22. set x 0
  23. while {$x<10} {
  24. incr x
  25. puts $x
  26. }
  27. }
  28.