NAME
       switch  -  Evaluate one of several scripts, depending on a
       given value

SYNOPSIS
       switch ?options? string pattern body ?pattern body ...?

       switch ?options? string {pattern body ?pattern body ...?}


DESCRIPTION
       The switch command matches  its  string  argument  against
       each  of  the  pattern  arguments in order.  As soon as it
       finds a pattern that matches string it evaluates the  fol
       lowing  body argument by passing it recursively to the Tcl
       interpreter and returns the result of that evaluation.  If
       the  last pattern argument is default then it matches any
       thing.  If no  pattern  argument  matches  string  and  no
       default is given, then the switch command returns an empty
       string.

       If the initial arguments to switch start with - then  they
       are  treated  as  options.  The following options are cur
       rently supported:

       -exact    Use exact matching when comparing  string  to  a
                 pattern.  This is the default.

       -glob     When  matching string to the patterns, use glob-
                 style matching (i.e. the same as implemented  by
                 the string match command).

       -regexp   When  matching string to the patterns, use regu
                 lar expression matching  (as  described  in  the
                 re_syntax reference page).

       --        Marks  the end of options.  The argument follow
                 ing this one will be treated as string  even  if
                 it starts with a -.

       Two  syntaxes  are provided for the pattern and body argu
       ments.  The first uses a separate argument for each of the
       patterns  and commands; this form is convenient if substi
       tutions are desired on some of the patterns  or  commands.
       The  second  form  places all of the patterns and commands
       together into a single argument; the  argument  must  have
       proper list structure, with the elements of the list being
       the patterns and commands.  The second form makes it  easy
       to  construct multi-line switch commands, since the braces
       around the whole list make it  unnecessary  to  include  a
       backslash  at  the  end  of  each line.  Since the pattern
       arguments are in braces in the second form, no command  or
       variable  substitutions are performed on them;  this makes
       the behavior of the second form different than  the  first
       form in some cases.

       If a body is specified as ``-'' it means that the body for
       the next pattern should also be used as the body for  this
       pattern (if the next pattern also has a body of ``-'' then
       the body after that is used, and  so  on).   This  feature
       makes  it  possible  to  share a single body among several
       patterns.

       Below are some examples of switch commands:
              switch abc a - b {format 1} abc {format 2} default {format 3}
       will return 2,
              switch -regexp aaab {
                ^a.*b$ -
                b {format 1}
                a* {format 2}
                default {format 3}
              }
       will return 1, and
              switch xyz {
                a
                   -
                b
                   {
                   # Correct Comment Placement (in switch body)
                   format 1
                }
                a*
                   {format 2}
                default
                   {format 3}
              }
       will return 3.


KEYWORDS
