trusty (3) subst.3tcl.gz

Provided by: tcl8.4-doc_8.4.20-7_all bug

NAME

       subst - Perform backslash, command, and variable substitutions

SYNOPSIS

       subst ?-nobackslashes? ?-nocommands? ?-novariables? string
_________________________________________________________________

DESCRIPTION

       This  command  performs variable substitutions, command substitutions, and backslash substitutions on its
       string argument and returns the fully-substituted result.  The substitutions are performed in exactly the
       same  way  as  for Tcl commands.  As a result, the string argument is actually substituted twice, once by
       the Tcl parser in the usual fashion for Tcl commands, and again by the subst command.

       If any of the  -nobackslashes,  -nocommands,  or  -novariables  are  specified,  then  the  corresponding
       substitutions  are  not performed.  For example, if -nocommands is specified, command substitution is not
       performed:  open and close brackets are treated as ordinary characters with no special interpretation.

       Note that the substitution of one kind can include substitution of other kinds.  For example,  even  when │
       the  -novariables option is specified, command substitution is performed without restriction.  This means │
       that any variable substitution necessary to complete the command  substitution  will  still  take  place. │
       Likewise,  any  command  substitution necessary to complete a variable substitution will take place, even │
       when -nocommands is specified.  See the EXAMPLES below.                                                   │

       If an error occurs during substitution, then subst will return that error.  If a break  exception  occurs │
       during  command  or  variable  substitution,  the result of the whole substitution will be the string (as │
       substituted) up to the start of the substitution that raised the  exception.   If  a  continue  exception │
       occurs  during  the evaluation of a command or variable substitution, an empty string will be substituted │
       for that entire command or variable substitution (as long  as  it  is  well-formed  Tcl.)   If  a  return │
       exception  occurs, or any other return code is returned during command or variable substitution, then the │
       returned value is substituted for  that  substitution.   See  the  EXAMPLES  below.   In  this  way,  all │
       exceptional  return codes are ``caught'' by subst.  The subst command itself will either return an error, │
       or will complete successfully.

EXAMPLES

       When it performs its substitutions, subst does not give any special treatment to double quotes  or  curly
       braces (except within command substitutions) so the script
              set a 44
              subst {xyz {$a}}
       returns ``xyz {44}'', not ``xyz {$a}'' and the script                                                     │
              set a "p\} q \{r"                                                                                  │
              subst {xyz {$a}}                                                                                   │
       return ``xyz {p} q {r}'', not ``xyz {p\} q \{r}''.                                                        │

       When  command  substitution is performed, it includes any variable substitution necessary to evaluate the │
       script.                                                                                                   │
              set a 44                                                                                           │
              subst -novariables {$a [format $a]}                                                                │
       returns ``$a 44'', not ``$a $a''.  Similarly, when variable substitution is performed,  it  includes  any │
       command substitution necessary to retrieve the value of the variable.                                     │
              proc b {} {return c}                                                                               │
              array set a {c c [b] tricky}                                                                       │
              subst -nocommands {[b] $a([b])}                                                                    │
       returns ``[b] c'', not ``[b] tricky''.                                                                    │

       The  continue and break exceptions allow command substitutions to prevent substitution of the rest of the │
       command substitution and the rest of  string  respectively,  giving  script  authors  more  options  when │
       processing text using subst.  For example, the script                                                     │
              subst {abc,[break],def}                                                                            │
       returns ``abc,'', not ``abc,,def'' and the script                                                         │
              subst {abc,[continue;expr 1+2],def}                                                                │
       returns ``abc,,def'', not ``abc,3,def''.                                                                  │

       Other exceptional return codes substitute the returned value                                              │
              subst {abc,[return foo;expr 1+2],def}                                                              │
       returns ``abc,foo,def'', not ``abc,3,def'' and                                                            │
              subst {abc,[return -code 10 foo;expr 1+2],def}                                                     │
       also returns ``abc,foo,def'', not ``abc,3,def''.

SEE ALSO

       Tcl(3tcl), eval(3tcl), break(3tcl), continue(3tcl)

KEYWORDS

       backslash substitution, command substitution, variable substitution