Your proc declarations are messed up... Proper syntax is as follows: proc <name> <argument list> <body> Right now, you're combining the name and argument list into one single string. The usual way of writing this is like this: proc myproc {arg1 arg2 arg3} { puts stdout "arg1: $arg1" puts ...