switch(n) Tcl Built-In Commands switch(n) _________________________________________________________________ NAME switch - Evaluate one of several scripts, depending on a given value SYNOPSIS switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g _p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...? switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g {_p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...?} _________________________________________________________________ DESCRIPTION The switch command matches its _s_t_r_i_n_g argument against each of the _p_a_t_t_e_r_n arguments in order. As soon as it finds a _p_a_t_t_e_r_n that matches _s_t_r_i_n_g it evaluates the following _b_o_d_y argument by passing it recursively to the Tcl interpreter and returns the result of that evaluation. If the last _p_a_t_- _t_e_r_n argument is default then it matches anything. If no _p_a_t_t_e_r_n argument matches _s_t_r_i_n_g 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 currently supported: -exact Use exact matching when comparing _s_t_r_i_n_g to a pattern. This is the default. -glob When matching _s_t_r_i_n_g to the patterns, use glob- style matching (i.e. the same as implemented by the string match command). -regexp When matching _s_t_r_i_n_g to the patterns, use regular expression matching (i.e. the same as implemented by the regexp command). -- Marks the end of options. The argument follow- ing this one will be treated as _s_t_r_i_n_g even if it starts with a -. Two syntaxes are provided for the _p_a_t_t_e_r_n and _b_o_d_y argu- ments. The first uses a separate argument for each of the patterns and commands; this form is convenient if substitu- tions 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 Tcl Last change: 7.0 1 switch(n) Tcl Built-In Commands switch(n) end of each line. Since the _p_a_t_t_e_r_n 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 _b_o_d_y is specified as ``-'' it means that the _b_o_d_y 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 _b_o_d_y 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 {format 1} a* {format 2} default {format 3} } will return 3. KEYWORDS switch, match, regular expression Tcl Last change: 7.0 2