Several [Tcl] commands, including [expect] and [switch], take a '--'. [RS] calls this, "the switch to end all switches". Here's why: What is the difference between switch $variable {... and switch -- $variable {... ? None--mostly; if, however, $variable contains a string such as "-glob", then the first form will be interpreted as switch -glob {... Do you see the problem? Do you see how your datum might be interpreted as a command "switch"? In casual English words, the '--' says, "treat everything that follows like data, '''not''' as a 'switch' or 'flag' ..." Alas, not every tcl command which takes a switch/flag recognizes -- as a valid entry. This means that the casual tcl programmer needs to check regularly to see if the command being coded accepts the -- or not. It surely would be nice if all tcl commands which take a -argument also accepted -- ... [MG] Not all commands need them. For instance, [lsearch] takes -args, but it's last two arguments are always the list and the value to find, so any other arguments are always switches. It's only really in things like [switch], [regexp], etc, which can take both a variable number of -arg switches and a variable number of string arguments, where the -- switch is ''needed'' to tell where -args end off and 'normal' args begin. (Not that it would hurt if -- was available for the others too, but I think that's why it's not currently.) ---- [Category Syntax]