Annotation of researchv10no/cmd/worm/scsi/tcl/Tcl.man, revision 1.1.1.1

1.1       root        1: '\" Copyright 1989 Regents of the University of California
                      2: '\" Permission to use, copy, modify, and distribute this
                      3: '\" documentation for any purpose and without fee is hereby
                      4: '\" granted, provided that this notice appears in all copies.
                      5: '\" The University of California makes no representations about
                      6: '\" the suitability of this material for any purpose.  It is
                      7: '\" provided "as is" without express or implied warranty.
                      8: '\" 
                      9: '\" $Header: /sprite/src/lib/tcl/RCS/Tcl.man,v 1.29 90/04/18 17:19:18 ouster Exp $ SPRITE (Berkeley)
                     10: '
                     11: .so \*(]ltmac.sprite
                     12: .de UL
                     13: \\$1\l'|0\(ul'\\$2
                     14: ..
                     15: .HS Tcl tcl
                     16: .BS
                     17: .SH NAME
                     18: Tcl \- overview of tool command language facilities
                     19: .BE
                     20: 
                     21: .SH INTRODUCTION
                     22: .PP
                     23: Tcl stands for ``tool command language'' and is pronounced ``tickle.''
                     24: It is actually two things:
                     25: a language and a library.
                     26: First, Tcl is a simple textual language,
                     27: intended primarily for issuing commands to interactive programs such
                     28: as text editors, debuggers, illustrators, and shells.  It has
                     29: a simple syntax and is also programmable, so
                     30: Tcl users can write command procedures to provide more powerful
                     31: commands than those in the built-in set.
                     32: .PP
                     33: Second, Tcl is a library package that can be embedded in application
                     34: programs.  The Tcl library consists of a parser for the Tcl
                     35: language, routines to implement the Tcl built-in commands, and
                     36: procedures that allow each application to extend Tcl with additional
                     37: commands specific to that application.  The application program
                     38: generates Tcl commands and passes them to the Tcl parser for
                     39: execution.  Commands may be generated
                     40: by reading characters from an input
                     41: source, or by associating command strings with elements of the
                     42: application's user interface, such as menu entries, buttons, or
                     43: keystrokes.
                     44: When the Tcl library receives commands it parses them
                     45: into component fields and executes built-in commands directly.
                     46: For commands implemented by the
                     47: application, Tcl calls back to the application to execute the
                     48: commands.  In many cases commands will invoke recursive invocations
                     49: of the Tcl interpreter by passing in additional strings to execute
                     50: (procedures, looping commands, and conditional commands all work
                     51: in this way).
                     52: .PP
                     53: An application program gains three advantages by using Tcl for
                     54: its command language.  First, Tcl provides a standard syntax:  once
                     55: users know Tcl, they will be able to issue commands easily
                     56: to any Tcl-based application.  Second, Tcl provides programmability.
                     57: All a Tcl application needs to do is to implement a few
                     58: application-specific low-level commands.  Tcl provides many utility
                     59: commands plus a general programming interface for building up
                     60: complex command procedures.  By using Tcl, applications need not
                     61: re-implement these features.  Third, Tcl will eventually provide
                     62: a mechanism for communicating between applications:  it will be
                     63: possible to send Tcl commands from one application to another.
                     64: The common Tcl language framework will make it easier for applications
                     65: to communicate with one another.  The communication features are not
                     66: implemented in the current version of Tcl.
                     67: .PP
                     68: This manual page focusses primarily on the Tcl language.  It describes
                     69: the language syntax and the built-in commands that will be available in
                     70: any application based on Tcl.  The individual library
                     71: procedures are described in more detail in separate manual pages, one
                     72: per procedure.
                     73: 
                     74: .SH "INTERPRETERS"
                     75: .PP
                     76: The central data structure in Tcl is an interpreter (C type
                     77: ``Tcl_Interp'').  An interpreter consists of a set of command
                     78: bindings, a set of variable values, and a few other miscellaneous
                     79: pieces of state.  Each Tcl command is interpreted in the context
                     80: of a particular interpreter.
                     81: Some Tcl-based applications will maintain
                     82: multiple interpreters simultaneously, each associated with a
                     83: different widget or portion of the application.
                     84: Interpreters are relatively lightweight structures.  They can
                     85: be created and deleted quickly, so application programmers should feel free to
                     86: use multiple interpreters if that simplifies the application.
                     87: Eventually Tcl will provide a mechanism for sending Tcl commands
                     88: and results back and forth between interpreters, even if the
                     89: interpreters are managed by different processes.
                     90: 
                     91: .SH "DATA TYPES"
                     92: .PP
                     93: Tcl supports only one type of data:  strings.  All commands,
                     94: all arguments to commands, all command results, and all variable values
                     95: are strings.
                     96: Where commands require numeric arguments or return numeric results,
                     97: the arguments and results are passed as strings.
                     98: Many commands expect their string arguments to have certain formats,
                     99: but this interpretation is
                    100: up to the individual commands.  For example, arguments often contain
                    101: Tcl command strings, which may get executed as part of the commands.
                    102: The easiest way to understand the Tcl interpreter is to remember that
                    103: everything is just an operation on a string.  In many cases Tcl constructs
                    104: will look similar to more structured constructs from other languages.
                    105: However, the Tcl constructs
                    106: are not structured at all;  they are just strings of characters, and this
                    107: gives them a different behavior than the structures they may look like.
                    108: .PP
                    109: Although the exact interpretation of a Tcl string depends on who is
                    110: doing the interpretation, there are three common forms that strings
                    111: take:  commands, expressions, and lists.  The major sections below
                    112: discuss these three forms in more detail.
                    113: 
                    114: .SH "BASIC COMMAND SYNTAX"
                    115: .PP
                    116: The Tcl language has syntactic similarities to both the Unix shells
                    117: and Lisp.  However, the interpretation of commands is different
                    118: in Tcl than in either of those other two systems.
                    119: A Tcl command string consists of one or more commands separated
                    120: by newline characters or semi-colons.
                    121: Each command consists of a collection of fields separated by
                    122: white space (spaces or tabs).
                    123: The first field must be the name of a command, and the
                    124: additional fields, if any, are arguments that will be passed to
                    125: that command.  For example, the command
                    126: .DS
                    127: \fBset a 22\fR
                    128: .DE
                    129: has three fields:  the first, \fBset\fR, is the name of a Tcl command, and
                    130: the last two, \fBa\fR and \fB22\fR, will be passed as arguments to
                    131: the \fBset\fR command.  The command name may refer either to a built-in
                    132: Tcl command, an application-specific command bound in with the library
                    133: procedure \fBTcl_CreateCommand\fR, or a command procedure defined with the
                    134: \fBproc\fR built-in command.
                    135: Arguments are passed literally as
                    136: text strings.  Individual commands may interpret those strings in any
                    137: fashion they wish.  The \fBset\fR command, for example, will treat its
                    138: first argument as the name of a variable and its second argument as a
                    139: string value to assign to that variable.  For other commands arguments
                    140: may be interpreted as integers, lists, file names, or Tcl commands.
                    141: .PP
                    142: Command names may be abbreviated as long as the abbreviation is unique.
                    143: However, it's probably a bad idea to use abbreviations in command scripts
                    144: and other forms that will be re-used over time:  changes to the command
                    145: set may cause abbreviations to become ambiguous, resulting in scripts
                    146: that no longer work.  Abbreviations are intended primarily for
                    147: commands that are typed interactively, invoked once, and discarded.
                    148: Also, command abbreviations are disallowed if the global variable
                    149: \fBnoAbbrev\fR has the value \fB1\fR.
                    150: 
                    151: .SH "COMMENTS"
                    152: .PP
                    153: If the first non-blank character in a command is \fB#\fR, then everything
                    154: from the \fB#\fR up through the next newline character is treated as
                    155: a comment and ignored.
                    156: 
                    157: .SH "GROUPING ARGUMENTS WITH DOUBLE-QUOTES"
                    158: .VS
                    159: .PP
                    160: Normally each argument field ends at the next white space, but
                    161: double-quotes may be used to create arguments with embedded
                    162: space.  If an argument
                    163: field begins with a double-quote, then the argument isn't
                    164: terminated by white space (including newlines) or a semi-colon
                    165: (see below for information on semi-colons);  instead it ends at the next
                    166: double-quote character.  The double-quotes are not included
                    167: in the resulting argument.  For example, the
                    168: command
                    169: .DS
                    170: \fBset a "This is a single argument"\fR
                    171: .DE
                    172: will pass two arguments to \fBset\fR:  \fBa\fR and
                    173: \fBThis is a single argument\fR.  Within double-quotes, command
                    174: substitutions, variable substitutions, and backslash substitutions
                    175: still occur, as described below.  If the first character of a
                    176: command field is not a quote, then quotes receive no special
                    177: interpretation in the parsing of that field.
                    178: 
                    179: .SH "GROUPING ARGUMENTS WITH BRACES"
                    180: .PP
                    181: Curly braces may also be used for grouping arguments.  They are
                    182: similar to quotes except for two differences.  First, they nest;
                    183: this makes them easier to use for complicated arguments like nested Tcl
                    184: command strings.  Second, the substitutions described below for
                    185: commands, variables, and backslashes do \fInot\fR occur in arguments
                    186: enclosed in braces, so braces can be used to prevent substitutions
                    187: where they are undesirable.
                    188: If an argument field
                    189: begins with a left brace, then the argument ends at the matching
                    190: right brace.  Tcl will strip off the outermost layer of braces
                    191: and pass the information between the braces to the command without
                    192: any further modification.  For example, in the command
                    193: .VE
                    194: .DS
                    195: \fBset a {xyz a {b c d}}\fR
                    196: .DE
                    197: the \fBset\fR command will receive two arguments: \fBa\fR
                    198: and \fBxyz a {b c d}\fR.
                    199: .PP
                    200: When braces or quotes are in effect, the matching brace
                    201: or quote need not be on
                    202: the same line as the starting quote or brace;  in this case
                    203: the newline will be
                    204: included in the argument field along with any other characters up to the
                    205: matching brace or quote.  For example, the \fBeval\fR command
                    206: takes one
                    207: argument, which is a command string;  \fBeval\fR invokes the Tcl
                    208: interpreter to execute the command string.  The command
                    209: .DS
                    210: \fBeval {
                    211:        set a 22
                    212:        set b 33
                    213: }\fR
                    214: .DE
                    215: will assign the value \fB22\fR to \fBa\fR and \fB33\fR to \fBb\fR.
                    216: .PP
                    217: If the first character of a command field is not a left
                    218: brace, then neither left nor right
                    219: braces in the field will be treated specially (except as part of
                    220: variable substitution;  see below).
                    221: 
                    222: .SH "COMMAND SUBSTITUTION WITH BRACKETS"
                    223: .PP
                    224: If an open bracket occurs in a field of a command, then
                    225: command substitution occurs (except for fields enclosed in
                    226: braces).  All of the text up to the matching
                    227: close bracket is treated as a Tcl command and executed immediately.
                    228: Then the result of that command is substituted for the bracketed
                    229: text.  For example, consider the command
                    230: .DS
                    231: \fBset a [set b]\fR
                    232: .DE
                    233: When the \fBset\fR command has only a single argument, it is the
                    234: name of a variable and \fBset\fR returns the contents of that
                    235: variable.  In this case, if variable \fBb\fR has the value \fBfoo\fR,
                    236: then the command above is equivalent to the command
                    237: .DS
                    238: \fBset a foo\fR
                    239: .DE
                    240: Brackets can be used in more complex ways.  For example, if the
                    241: variable \fBb\fR has the value \fBfoo\fR and the variable \fBc\fR
                    242: has the value \fBgorp\fR, then the command
                    243: .DS
                    244: \fBset a xyz[set b].[set c]\fR
                    245: .DE
                    246: is equivalent to the command
                    247: .DS
                    248: \fBset a xyzfoo.gorp\fR
                    249: .DE
                    250: A bracketed command need not be all on one line:  newlines within
                    251: brackets are treated as argument separators, not command separators.
                    252: If a field is enclosed in braces then the brackets and the characters
                    253: between them are not interpreted specially;  they are passed through
                    254: to the argument verbatim.
                    255: 
                    256: .SH "VARIABLE SUBSTITUTION WITH $"
                    257: .PP
                    258: The dollar sign (\fB$\fR) may be used as a special shorthand form
                    259: for substituting variables.  If \fB$\fR appears in an argument that
                    260: isn't enclosed in braces
                    261: then variable substitution will occur.  The characters after
                    262: the \fB$\fR, up to the first character that isn't a number, letter, or
                    263: underscore, are taken as a variable name and the string value of that
                    264: variable is substituted for the name.  Or, if the dollar sign is followed
                    265: by an open curly brace then the variable name consists of all the characters
                    266: up to the next close curly brace.  For example, if variable \fBfoo\fR
                    267: has the value \fBtest\fR, then the command
                    268: .DS C
                    269: \fBset a $foo.c\fR
                    270: .DE
                    271: is equivalent to the command
                    272: .DS C
                    273: \fBset a test.c\fR
                    274: .DE
                    275: and the command
                    276: .DS C
                    277: \fBset a abc${foo}bar\fR
                    278: .DE
                    279: is equivalent to the command
                    280: .DS C
                    281: \fBset a abctestbar\fR
                    282: .DE
                    283: Variable substitution does not occur in arguments that are enclosed
                    284: in braces:  the
                    285: dollar sign and variable name are passed through to the argument verbatim.
                    286: .PP
                    287: The dollar sign abbreviation is simply a shorthand form.  \fB$a\fR is
                    288: completely equivalent to \fB[set a]\fR;  it is provided as a convenience
                    289: to reduce typing.
                    290: 
                    291: .VS
                    292: .SH "SEPARATING COMMANDS WITH SEMI-COLONS"
                    293: .PP
                    294: Normally, each command occupies one line (the command is terminated by
                    295: a newline character).  However, semi-colon (``;'') is treated
                    296: as a command separator character;  multiple commands may be placed
                    297: on one line by separating them with a semi-colon.  Semi-colons are
                    298: not treated as command separators if they appear within curly braces
                    299: or double-quotes.
                    300: .VE
                    301: 
                    302: .SH "BACKSLASH SUBSTITUTION"
                    303: .PP
                    304: Backslashes may be used to insert non-printing characters into
                    305: command fields and also to insert special characters like
                    306: braces and brackets into fields
                    307: without them being interpreted specially as described above.
                    308: The backslash sequences understood by the Tcl interpreter are
                    309: listed below.  In each case, the backslash
                    310: sequence is replaced by the given character:
                    311: .TP 20
                    312: \fB\eb\fR
                    313: Backspace (0x8).
                    314: .TP 20
                    315: \fB\ee\fR
                    316: Escape (0x1b).
                    317: .TP 20
                    318: \fB\en\fR
                    319: Newline (0xa).
                    320: .TP 20
                    321: \fB\er\fR
                    322: .VS
                    323: Carriage-return (0xd).
                    324: .VE
                    325: .TP 20
                    326: \fB\et\fR
                    327: Tab (0x9).
                    328: .TP 20
                    329: \fB\e{\fR
                    330: Left brace (``{'').
                    331: .TP 20
                    332: \fB\e}\fR
                    333: Right brace (``}'').
                    334: .TP 20
                    335: \fB\e[\fR
                    336: Open bracket (``['').
                    337: .TP 20
                    338: \fB\e]\fR
                    339: Close bracket (``]'').
                    340: .TP 20
                    341: \fB\e$\fR
                    342: Dollar sign (``$'').
                    343: .TP 20
                    344: \fB\e<space>\fR
                    345: Space (`` ''): doesn't terminate argument.
                    346: .br
                    347: .VS
                    348: .TP 20
                    349: \fB\e;\fR
                    350: Semi-colon: doesn't terminate command.
                    351: .TP 20
                    352: \fB\e"\fR
                    353: Double-quote.
                    354: .TP 20
                    355: \fB\e<newline>\fR
                    356: Nothing:  this effectively joins two lines together
                    357: into a single line.  This backslash feature is only provided
                    358: when parsing Tcl commands;  it is not supported by the
                    359: Tcl_Backslash procedure.
                    360: .VE
                    361: .TP 20
                    362: \fB\e\e\fR
                    363: Backslash (``\e'').
                    364: .TP 20
                    365: \fB\eC\fIx\fR
                    366: Control-\fIx\fR (\fIx\fR AND octal 037), for any ASCII \fIx\fR except \fBM\fR
                    367: (see below).
                    368: .TP 20
                    369: \fB\eM\fIx\fR
                    370: Meta-\fIx\fR (\fIx\fR OR octal 200), for any ASCII \fIx\fR.
                    371: .TP 20
                    372: \fB\eCM\fIx\fR
                    373: Control-meta-\fIx\fR ((\fIx\fR AND octal 037) OR octal 0200), for
                    374: any ASCII \fIx\fR.
                    375: .TP 20
                    376: \fB\e\fIddd\fR
                    377: The digits \fIddd\fR (one, two, or three of them) give the octal value of
                    378: the character.
                    379: .PP
                    380: For example, in the command
                    381: .DS
                    382: \fBset a \e{x\e[\e\0yz\e141\fR
                    383: .DE
                    384: the second argument to \fBset\fR will be ``\fB{x[\0yza\fR''.
                    385: .PP
                    386: If a backslash is followed by something other than one of the options
                    387: described above, then the backslash is transmitted to the argument
                    388: field without any special processing, and the Tcl scanner continues
                    389: normal processing with the next character.  For example, in the
                    390: command
                    391: .DS
                    392: \fBset \e*a \e\e\e{foo\fR
                    393: .DE
                    394: The first argument to \fBset\fR will be \fB\e*a\fR and the second
                    395: argument will be \fB\e{foo\fR.
                    396: .PP
                    397: If an argument is enclosed in braces, then backslash sequences inside
                    398: the argument are parsed but no substitution occurs:  the backslash
                    399: sequence is passed through to the argument as is, without making
                    400: any special interpretation of the characters in the backslash sequence.
                    401: In particular, backslashed braces are not counted in locating the
                    402: matching right brace that terminates the argument.
                    403: For example, in the
                    404: command
                    405: .DS
                    406: \fBset a {\e{abc}\fR
                    407: .DE
                    408: the second argument to \fBset\fR will be \fB\e{abc\fR.
                    409: .PP
                    410: This backslash mechanism is not sufficient to generate absolutely
                    411: any argument structure;  it only covers the
                    412: most common cases.  To produce particularly complicated arguments
                    413: it is probably easiest to use the \fBformat\fR command along with
                    414: command substitution.
                    415: 
                    416: .SH "COMMAND SUMMARY"
                    417: .IP [1]
                    418: A command is just a string.
                    419: .IP [2]
                    420: Within a string commands are separated by newlines or semi-colons
                    421: (unless the newline or semi-colon is within braces or brackets
                    422: or is backslashed).
                    423: .IP [3]
                    424: A command consists of fields.  The first field is the name of the command,
                    425: and may be abbreviated.
                    426: The other fields are strings that are passed to that command as arguments.
                    427: .IP [4]
                    428: Fields are normally separated by white space.
                    429: .IP [5]
                    430: Double-quotes allow white space and semi-colons to appear within
                    431: a single argument.
                    432: Command substitution, variable substitution, and backslash substitution
                    433: still occur inside quotes.
                    434: .IP [6]
                    435: Braces defer interpretation of special characters.
                    436: If a field begins with a left brace, then it consists of everything
                    437: between the left brace and the matching right brace. The
                    438: braces themselves are not included in the argument.
                    439: No further processing is done on the information between the braces.
                    440: .IP [7]
                    441: If a field doesn't begin with a brace then backslash,
                    442: variable, and command substitution are done on the field.  Only a
                    443: single level of processing is done:  the results of one substitution
                    444: are not scanned again for further substitutions or any other
                    445: special treatment.  Substitution can
                    446: occur on any field of a command, including the command name
                    447: as well as the arguments.
                    448: .IP [8]
                    449: If the first non-blank character of a command is a \fB#\fR, everything
                    450: from the \fB#\fR up through the next newline is treated as a comment
                    451: and ignored.
                    452: 
                    453: .SH "EXPRESSIONS"
                    454: .PP
                    455: The second major interpretation applied to strings in Tcl is
                    456: as expressions.  Several commands, such as \fBexpr\fR, \fBfor\fR,
                    457: and \fBif\fR, treat some of their arguments as expressions and
                    458: call the Tcl expression processor (\fBTcl_Expr\fR) to evaluate them.
                    459: A Tcl expression has C-like syntax and evaluates to an integer
                    460: result.  Expressions
                    461: may contain integer values, variable names in \fB$\fR notation
                    462: (the variables' values must be integer strings),
                    463: commands (embedded in brackets) that produce integer string results,
                    464: parentheses for grouping, and operators.  Numeric values, whether they
                    465: are passed directly or through variable or command substitution, may
                    466: be specified either in decimal (the normal case), in octal (if the
                    467: first character of the value is \fB0\fR), or in hexadecimal (if the first
                    468: two characters of the value are \fB0x\fR).
                    469: The valid operators are listed
                    470: below, grouped in decreasing order of precedence:
                    471: .TP 20
                    472: \fB\-\0\0~\0\0!\fR
                    473: Unary minus, bit-wise NOT, logical NOT.
                    474: .TP 20
                    475: \fB*\0\0/\0\0%\fR
                    476: Multiply, divide, remainder.
                    477: .TP 20
                    478: \fB+\0\0\-\fR
                    479: Add and subtract.
                    480: .TP 20
                    481: \fB<<\0\0>>\fR
                    482: Left and right shift.
                    483: .TP 20
                    484: \fB<\0\0>\0\0<=\0\0>=\fR
                    485: Boolean less, greater, less than or equal, and greater than or equal.
                    486: Each operator produces 1 if the condition is true, 0 otherwise.
                    487: .TP 20
                    488: \fB==\0\0!=\fR
                    489: Boolean equal and not equal.  Each operator produces a zero/one result.
                    490: .TP 20
                    491: \fB&\fR
                    492: Bit-wise AND.
                    493: .TP 20
                    494: \fB^\fR
                    495: Bit-wise exclusive OR.
                    496: .TP 20
                    497: \fB|\fR
                    498: Bit-wise OR.
                    499: .TP 20
                    500: \fB&&\fR
                    501: Logical AND.  Produces a 1 result if both operands are non-zero, 0 otherwise.
                    502: .TP 20
                    503: \fB||\fR
                    504: Logical OR.  Produces a 0 result if both operands are zero, 1 otherwise.
                    505: .TP 20
                    506: \fIx\fB?\fIy\fB:\fIz\fR
                    507: .VS
                    508: If-then-else, as in C.  If \fIx
                    509: evaluates to non-zero, then the result is the value of \fIy\fR.
                    510: Otherwise the result is the value of \fIz\fR.
                    511: .VE
                    512: .PP
                    513: See the C manual for more details on the results
                    514: produced by each operator.
                    515: All of the binary operators group left-to-right within the same
                    516: precedence level.  For example, the expression
                    517: .DS
                    518: \fB(4*2) < 7\fR
                    519: .DE
                    520: evaluates to 0.  Evaluating the expression string
                    521: .DS
                    522: \fB($a + 3) < [set b]\fR
                    523: .DE
                    524: will cause the values of the variables \fBa\fR and \fBb\fR to be
                    525: examined;  the result will be 1
                    526: if \fBb\fR is greater than a by at least 3;  otherwise the result
                    527: will be 0.
                    528: .PP
                    529: In general it is safest to enclose an expression in braces when
                    530: entering it in a command:  otherwise, if the expression contains
                    531: any white space then the Tcl interpreter will split it
                    532: among several arguments.  For example, the command
                    533: .DS C
                    534: \fBexpr $a + $b\fR
                    535: .DE
                    536: results in three arguments being passed to \fBexpr\fR:  \fB$a\fR,
                    537: \fB+\fR, and \fB$b\fR.  In addition, if the expression isn't in braces
                    538: then the Tcl interpreter will perform variable and command substitution
                    539: immediately (it will happen in the command parser rather than in
                    540: the expression parser).  In many cases the expression is being
                    541: passed to a command that will evaluate the expression later (or
                    542: even many times if, for example, the expression is to be used to
                    543: decide when to exit a loop).  Usually the desired goal is to re-do
                    544: the variable or command substitutions each time the expression is
                    545: evaluated, rather than once and for all at the beginning.  For example,
                    546: the command
                    547: .DS C
                    548: \fBfor {set i 1} $i<=10 {set i [expr $i+1]} {...}\fR
                    549: .DE
                    550: is probably intended to iterate over all values of \fBi\fR from 1 to 10.
                    551: After each iteration of the body of the loop, \fBfor\fR will pass
                    552: its second argument to the expression evaluator to see whether or not
                    553: to continue processing.  Unfortunately, in this case the value of \fBi\fR
                    554: in the second argument will be substituted once and for all when the
                    555: \fBfor\fR command is parsed.  If \fBi\fR was 0 before the \fBfor\fR
                    556: command was invoked then \fBfor\fR's second argument will be \fB0<=10\fR
                    557: which will always evaluate to 1, even though \fBi\fR's value eventually
                    558: becomes greater than 10.  In the above case the loop will never
                    559: terminate.  By placing the expression in braces, the
                    560: substitution of \fBi\fR's
                    561: value will be delayed;  it will be re-done each time the expression is
                    562: evaluated, which is probably the desired result.
                    563: 
                    564: .SH LISTS
                    565: .PP
                    566: The third major way that strings are interpreted in Tcl is as lists.
                    567: A list is just a string with a list-like structure
                    568: consisting of fields separated by white space.  For example, the
                    569: string
                    570: .DS
                    571: \fBAl Sue Anne John\fR
                    572: .DE
                    573: is a list with four elements or fields.
                    574: Lists have the same basic structure as command strings, except
                    575: that a newline character in a list is treated as a field separator
                    576: just like space or tab.  Conventions for braces
                    577: and backslashes are the same for lists as for commands.  For example,
                    578: the string
                    579: .DS
                    580: \fBa b\e c {d e {f g h}}\fR
                    581: .DE
                    582: is a list with three elements:  \fBa\fR, \fBb c\fR, and \fBd e {f g h}\fR.
                    583: Whenever an element
                    584: is extracted from a list, the same rules about backslashes and
                    585: braces are applied as for commands.  Thus in the example above
                    586: when the third element is extracted from the list, the result is
                    587: .DS
                    588: \fBd e {f g h}\fR
                    589: .DE
                    590: (when the field was extracted, all that happened was to strip off
                    591: the outermost layer of braces).  Command substitution is never
                    592: made on a list (at least, not by the list-processing commands;  the
                    593: list can always be passed to the Tcl interpreter for evaluation).
                    594: .PP
                    595: The Tcl commands \fBconcat\fR, \fBforeach\fR, \fBindex\fR,
                    596: \fBlength\fR, \fBlist\fR, and \fBrange\fR allow you to build lists,
                    597: extract elements from them, search them, and perform other list-related
                    598: functions.
                    599: 
                    600: .SH "COMMAND RESULTS"
                    601: .PP
                    602: Each command produces two results:  a code and a string.  The
                    603: code indicates whether the command completed successfully or not,
                    604: and the string gives additional information.  The valid codes are
                    605: defined in tcl.h, and are:
                    606: .RS
                    607: .TP 20
                    608: \fBTCL_OK\fR
                    609: This is the normal return code, and indicates that the command completed
                    610: succesfully.  The string gives the command's return value.
                    611: .TP 20
                    612: \fBTCL_ERROR\fR
                    613: Indicates that an error occurred;  the string gives a message describing
                    614: the error.
                    615: .VS
                    616: The variable \fBerrorInfo\fR will contain additional information
                    617: describing which commands and procedures were being executed when the
                    618: error occurred.
                    619: .VE
                    620: .TP 20
                    621: \fBTCL_RETURN\fR
                    622: Indicates that the \fBreturn\fR command has been invoked, and that the
                    623: .VS
                    624: current procedure (or top-level command or \fBsource\fR command)
                    625: should return immediately.  The
                    626: string gives the return value for the procedure or command.
                    627: .VE
                    628: .TP 20
                    629: \fBTCL_BREAK\fR
                    630: Indicates that the \fBbreak\fR command has been invoked, so the
                    631: innermost loop should abort immediately.  The string should always
                    632: be empty.
                    633: .TP 20
                    634: \fBTCL_CONTINUE\fR
                    635: Indicates that the \fBcontinue\fR command has been invoked, so the
                    636: innermost loop should go on to the next iteration.  The string
                    637: should always be empty.
                    638: .RE
                    639: Tcl programmers do not normally need to think about return codes,
                    640: since TCL_OK is almost always returned.  If anything else is returned
                    641: by a command, then the Tcl interpreter immediately stops processing
                    642: commands and returns to its caller.  If there are several nested
                    643: invocations of the Tcl interpreter in progress, then each nested
                    644: command will usually return the error to its caller, until eventually
                    645: the error is reported to the top-level application code.  The
                    646: application will then display the error message for the user.
                    647: .PP
                    648: In a few cases, some commands will handle certain ``error'' conditions
                    649: themselves and not return them upwards.  For example, the \fBfor\fR
                    650: command checks for the TCL_BREAK code;  if it occurs, then \fBfor\fR
                    651: stops executing the body of the loop and returns TCL_OK to its
                    652: caller.  The \fBfor\fR command also handles TCL_CONTINUE codes and the
                    653: procedure interpreter handles TCL_RETURN codes.  The \fBcatch\fR
                    654: command allows Tcl programs to catch errors and handle them without
                    655: aborting command interpretation any further.
                    656: 
                    657: .SH PROCEDURES
                    658: .PP
                    659: Tcl allows you to extend the command interface by defining
                    660: procedures.  A Tcl procedure can be invoked just like any other Tcl
                    661: command (it has a name and it receives one or more arguments).
                    662: The only difference is that its body isn't a piece of C code linked
                    663: into the program;  it is a string containing one or more other
                    664: Tcl commands.  See the \fBproc\fR command for information on
                    665: how to define procedures and what happens when they are invoked.
                    666: 
                    667: .SH VARIABLES
                    668: .PP
                    669: Tcl allows the definition of variables and the use of their values
                    670: either through \fB$\fR-style variable substitution, the \fBset\fR
                    671: command, or a few other mechanisms.  Variables need not be declared:
                    672: a new variable will automatically be created each time a new variable
                    673: name is used.  Variables may be either global or local.  If a variable
                    674: name is used when a procedure isn't being executed, then it
                    675: automatically refers to a global variable.  Variable names used
                    676: within a procedure normally refer to local variables associated with that
                    677: invocation of the procedure.  Local variables are deleted whenever
                    678: a procedure exits.  The \fBglobal\fR command may be used to request
                    679: that a name refer to a global variable for the duration of the current
                    680: procedure (this is somewhat analogous to \fBextern\fR in C).
                    681: 
                    682: .SH "BUILT-IN COMMANDS"
                    683: .PP
                    684: The Tcl library provides the following built-in commands, which will
                    685: be available in any application using Tcl.  In addition to these
                    686: built-in commands, there may be additional commands defined by each
                    687: application, plus commands defined as Tcl procedures.  In the command syntax
                    688: descriptions below, optional arguments are indicated by enclosing their
                    689: names in brackets;  apologies in advance for the confusion between this
                    690: descriptive use of brackets and the use of brackets to invoke
                    691: command substitution.
                    692: Words in boldface are literals that you type verbatim to Tcl.
                    693: Words in italics are meta-symbols;  they act as names to refer to
                    694: a class of values that you can type.
                    695: .TP
                    696: \fBbreak\fR
                    697: This command may be invoked only inside the body of a loop command
                    698: such as \fBfor\fR or \fBforeach\fR.  It returns a TCL_BREAK code
                    699: to signal the innermost containing loop command to return immediately.
                    700: .TP
                    701: \fBcase\fI string \fR[\fBin\fR] \fIpatList body patList body \fR...
                    702: .VS
                    703: Match \fIstring\fR against each of the \fIpatList\fR arguments
                    704: in order.  If one matches, then evaluate the following \fIbody\fR argument
                    705: by passing it recursively to the Tcl interpreter, and return the result
                    706: of that evaluation.  Each \fIpatList\fR argument consists of a single
                    707: pattern or list of patterns.  Each pattern may contain any of the wild-cards
                    708: described under \fBstring match\fR.  If a \fIpatList\fR
                    709: argument is \fBdefault\fR, the corresponding body will be evaluated
                    710: if no \fIpatList\fR matches \fIstring\fR.  If no \fIpatList\fR argument
                    711: matches \fIstring\fR and no default is given, then the \fBcase\fR
                    712: command returns an empty string.  For example,
                    713: .RS
                    714: .DS
                    715: \fBcase abc in {a b} {format 1} default {format 2} a* {format 3}
                    716: .DE
                    717: will return \fB3\fR, 
                    718: .DS
                    719: \fBcase a in {a b} {format 1} default {format 2} a* {format 3}
                    720: .DE
                    721: will return \fB1\fR, and
                    722: .DS
                    723: \fBcase xyz {a b} {format 1} default {format 2} a* {format 3}
                    724: .DE
                    725: will return \fB2\fR.
                    726: .RE
                    727: .VE
                    728: .TP
                    729: \fBcatch\fI command \fR[\fIvarName\fR]
                    730: The \fBcatch\fR command may be used to prevent errors from aborting
                    731: command interpretation.  \fBCatch\fR calls the Tcl interpreter recursively
                    732: to execute \fIcommand\fR, and always returns a TCL_OK code, regardless of
                    733: any errors that might occur while executing \fIcommand\fR.  The return
                    734: value from \fBcatch\fR is a decimal string giving the
                    735: code returned by the Tcl interpreter after executing \fIcommand\fR.
                    736: This will be \fB0\fR (TCL_OK) if there were no errors in \fIcommand\fR; otherwise
                    737: it will have a non-zero value corresponding to one of the exceptional
                    738: return codes (see tcl.h for the definitions of code values).  If the
                    739: \fIvarName\fR argument is given, then it gives the name of a variable;
                    740: \fBcatch\fR will set the value of the variable to the string returned
                    741: from \fIcommand\fR (either a result or an error message).
                    742: .TP
                    743: \fBconcat\fI arg \fR[\fIarg ...\fR]
                    744: This command treats each argument as a list and concatenates them
                    745: into a single list.  It permits any number of arguments.  For example,
                    746: the command
                    747: .RS
                    748: .DS
                    749: \fBconcat a b {c d e} {f {g h}}\fR
                    750: .DE
                    751: will return
                    752: .DS
                    753: \fBa b c d e f {g h}\fR
                    754: .DE
                    755: as its result.
                    756: .RE
                    757: .TP
                    758: \fBcontinue\fR
                    759: This command may be invoked only inside the body of a loop command
                    760: such as \fBfor\fR or \fBforeach\fR.  It returns a  TCL_CONTINUE code
                    761: to signal the innermost containing loop command to skip the
                    762: remainder of the loop's body
                    763: but continue with the next iteration of the loop.
                    764: .TP
                    765: \fBerror \fImessage\fR [\fIinfo\fR]
                    766: Returns a TCL_ERROR code, which causes command interpretation to be
                    767: unwound.  \fIMessage\fR is a string that is returned to the application
                    768: to indicate what went wrong.
                    769: .VS
                    770: If the \fIinfo\fR argument is
                    771: provided, it is used to initialize the global variable \fBerrorInfo\fR.
                    772: \fBErrorInfo\fR is used to accumulate a stack trace of what
                    773: was in progress when an error occurred;  as nested commands unwind,
                    774: the Tcl interpreter adds information to \fBerrorInfo\fR.  If the
                    775: \fIinfo\fR argument is present, it is used to initialize the
                    776: \fBerrorInfo\fR variable, and the first increment of unwind information
                    777: will not be added by the Tcl interpreter.  In other
                    778: words, the command containing the \fBerror\fR command will not appear
                    779: in the \fBerrorInfo\fR variable;  in its place will be \fIinfo\fR.
                    780: This feature is most useful in conjunction with the \fBcatch\fR command:
                    781: if a caught error cannot be handled successfully, \fIinfo\fR can be used
                    782: to return a stack trace reflecting the original point of occurrence
                    783: of the error:
                    784: .RS
                    785: .DS
                    786: \fBcatch {...} errMsg
                    787: set savedInfo $errorInfo
                    788: \&...
                    789: error $errMsg $savedInfo\fR
                    790: .DE
                    791: .RE
                    792: .TP
                    793: \fBeval \fIarg1 \fR[\fIarg2 ...\fR]
                    794: \fBEval\fR takes one or more arguments, which together comprise a Tcl
                    795: command (or collection of Tcl commands separated by newlines in the
                    796: usual way).  \fBEval\fR concatenates all its arguments in the same
                    797: fashion as the \fBconcat\fR command, passes the concatenated string to the
                    798: Tcl interpreter recursively, and returns the result of that
                    799: evaluation (or any error generated by it).
                    800: .VE
                    801: .TP
                    802: \fBexec \fIcommand arg1 \fR[\fIarg2 ...\fR] [\fB< \fIinput\fR]
                    803: The \fBexec\fR command treats its \fIcommand\fR argument as the name of
                    804: a program to execute.  \fBExec\fR
                    805: .VS
                    806: performs tilde-substitution on
                    807: \fIcommand\fR, if appropriate, then searches the directories in
                    808: .VE
                    809: the PATH environment variable to find
                    810: an executable file by the name \fIcommand\fR,
                    811: then executes the file, passing it an argument list consisting of
                    812: \fIcommand\fR plus all of the \fIarg\fRs.  If an argument \fB<\fR appears
                    813: anywhere among the arguments to \fBexec\fR, then neither it or the
                    814: following argument is passed to \fIcommand\fR.  Instead, the following
                    815: argument (\fIinput\fR) consists of input to the command;  \fBexec\fR
                    816: will create a pipe and use it to pass \fIinput\fR to \fIcommand\fR
                    817: as standard input.  \fBExec\fR also creates a pipe to receive \fIcommand\fR's
                    818: output (both standard output and standard error).  The information
                    819: received over this pipe is returned as the result of the \fBexec\fR
                    820: command.  The \fBexec\fR command also looks at the return status
                    821: returned by \fIcommand\fR.  Normally this should be zero;  if it is then
                    822: \fBexec\fR returns normally.  If \fIcommand\fR returns a non-zero status,
                    823: then \fBexec\fR will return that code;  it should be one of the ones
                    824: defined in the section ``COMMAND RESULTS'' above.  If an out-of range
                    825: code is returned by the command, it will cause command unwinding just
                    826: as if TCL_ERROR had been returned; at the outermost level of command
                    827: interpretation, the Tcl interpreter will turn the code into TCL_ERROR,
                    828: with an appropriate error message.
                    829: .TP
                    830: \fBexpr \fIarg\fR
                    831: Calls the expression processor to evaluate \fIarg\fR, and returns
                    832: the result as a decimal string.
                    833: .TP
                    834: \fBfile \fIname\fR \fIoption\fR
                    835: Operate on a file or a file name.  \fIName\fR is the name of a file;
                    836: .VS
                    837: if it starts with a tilde, then tilde substitution is done before
                    838: executing the command (see the manual entry for \fBTcl_TildeSubst\fR
                    839: for details).
                    840: .VE
                    841: \fIOption\fR indicates what to do with the file name.  Any unique
                    842: abbreviation for \fIoption\fR is acceptable.  The valid options are:
                    843: .RS
                    844: .TP
                    845: \fBfile \fIname \fBdirname\fR
                    846: Return all of the characters in \fIname\fR up to but not including
                    847: the last slash character.  If there are no slashes in \fIname\fR
                    848: then return ``.''.  If the last slash in \fIname\fR is its first
                    849: character, then return ``/''.
                    850: .TP
                    851: \fBfile \fIname \fBexecutable\fR
                    852: Return \fB1\fR if file \fIname\fR is executable by
                    853: the current user, \fB0\fR otherwise.
                    854: .TP
                    855: \fBfile \fIname \fBexists\fR
                    856: Return \fB1\fR if file \fIname\fR exists and the current user has
                    857: search privileges for the directories leading to it, \fB0\fR otherwise.
                    858: .TP
                    859: \fBfile \fIname \fBextension\fR
                    860: Return all of the characters in \fIname\fR after and including the
                    861: last dot in \fIname\fR.  If there is no dot in \fIname\fR then return
                    862: the empty string.
                    863: .TP
                    864: \fBfile \fIname \fBisdirectory\fR
                    865: Return \fB1\fR if file \fIname\fR is a directory,
                    866: \fB0\fR otherwise.
                    867: .TP
                    868: \fBfile \fIname \fBisfile\fR
                    869: Return \fB1\fR if file \fIname\fR is a regular file,
                    870: \fB0\fR otherwise.
                    871: .TP
                    872: \fBfile \fIname \fBowned\fR
                    873: Return \fB1\fR if file \fIname\fR is owned by the current user,
                    874: \fB0\fR otherwise.
                    875: .TP
                    876: \fBfile \fIname \fBreadable\fR
                    877: Return \fB1\fR if file \fIname\fR is readable by
                    878: the current user, \fB0\fR otherwise.
                    879: .TP
                    880: \fBfile \fIname \fBrootname\fR
                    881: Return all of the characters in \fIname\fR up to but not including
                    882: the last ``.'' character in the name.  If \fIname\fR doesn't contain
                    883: a dot, then return \fIname\fR.
                    884: .TP
                    885: \fBfile \fIname \fBtail\fR
                    886: Return all of the characters in \fIname\fR after the last slash.
                    887: If \fIname\fR contains no slashes then return \fIname\fR.
                    888: .TP
                    889: \fBfile \fIname \fBwritable\fR
                    890: Return \fB1\fR if file \fIname\fR is writable by
                    891: the current user, \fB0\fR otherwise.
                    892: .RE
                    893: .IP
                    894: The \fBfile\fR commands that return 0/1 results are often used in
                    895: conditional or looping commands, for example:
                    896: .RS
                    897: .DS
                    898: \fBif {![file foo exists]} then {error {bad file name}} else {...}\fR
                    899: .DE
                    900: .RE
                    901: .TP
                    902: \fBfor \fIstart test next body\fR
                    903: \fBFor\fR is a looping command, similar in structure to the C
                    904: \fBfor\fR statement.  The \fIstart\fR, \fInext\fR, and
                    905: \fIbody\fR arguments must be Tcl command strings, and \fItest\fR
                    906: is an expression string.
                    907: The \fBfor\fR command first invokes the Tcl interpreter to
                    908: execute \fIstart\fR.  Then it repeatedly evaluates \fItest\fR as
                    909: an expression;  if the result is non-zero it invokes the Tcl
                    910: interpreter on \fIbody\fR, then invokes the Tcl interpreter on \fInext\fR,
                    911: then repeats the loop.  The command terminates when \fItest\fR evaluates
                    912: to 0.  If a \fBcontinue\fR command is invoked within \fIbody\fR then
                    913: any remaining commands in the current execution of \fIbody\fR are skipped;
                    914: processing continues by invoking the Tcl interpreter on \fInext\fR, then
                    915: evaluating \fItest\fR, and so on.  If a \fBbreak\fR command is invoked
                    916: within \fIbody\fR
                    917: .VS
                    918: or \fInext\fR,
                    919: .VE
                    920: then the \fBfor\fR command will
                    921: return immediately.
                    922: The operation of \fBbreak\fR and \fBcontinue\fR are similar to the
                    923: corresponding statements in C.
                    924: \fBFor\fR returns an empty string.
                    925: .TP
                    926: \fBforeach \fIvarname list body\fR
                    927: In this command, \fIvarname\fR is the name of a variable, \fIlist\fR
                    928: is a list of values to assign to \fIvarname\fR, and \fIbody\fR is a
                    929: collection of Tcl commands.  For each field in \fIlist\fR (in order
                    930: from left to right), \fBforeach\fR assigns the contents of the
                    931: field to \fIvarname\fR (as if the \fBindex\fR command had been used
                    932: to extract the field), then calls the Tcl interpreter to execute
                    933: \fIbody\fR.  The \fBbreak\fR and \fBcontinue\fR statements may be
                    934: invoked inside \fIbody\fR, with the same effect as in the \fBfor\fR
                    935: command.  \fBForeach\fR an empty string.
                    936: .TP
                    937: \fBformat \fIformatString \fR[\fIarg arg ...\fR]
                    938: This command generates a formatted string in the same way as the
                    939: C \fBsprintf\fR procedure (it uses \fBsprintf\fR in its
                    940: implementation).  \fIFormatString\fR indicates how to format
                    941: the result, using \fB%\fR fields as in \fBsprintf\fR, and the additional
                    942: arguments, if any, provide values to be substituted into the result.
                    943: All of the \fBsprintf\fR options are valid;  see the \fBsprintf\fR
                    944: man page for details.  Each \fIarg\fR must match the expected type
                    945: from the \fB%\fR field in \fIformatString\fR;  the \fBformat\fR command
                    946: converts each argument to the correct type (floating, integer, etc.)
                    947: before passing it to \fBsprintf\fR for formatting.
                    948: The only unusual conversion is for \fB%c\fR;  in this case the argument
                    949: must be a decimal string, which will then be converted to the corresponding
                    950: ASCII character value.
                    951: \fBFormat\fR does backslash substitution on its \fIformatString\fR
                    952: argument, so backslash sequences in \fIformatString\fR will be handled
                    953: correctly even if the argument is in braces.
                    954: The return value from \fBformat\fR
                    955: is the formatted string.
                    956: .TP
                    957: \fBglob \fIfilename\fR [\fIfilename ...\fR]
                    958: .VS
                    959: This command performs filename globbing, using csh rules.  The returned
                    960: value from \fBglob\fR is the list of expanded filenames.
                    961: .VE
                    962: .TP
                    963: \fBglobal \fIvarname \fR[\fIvarname ...\fR]
                    964: This command is ignored unless a Tcl procedure is being interpreted.
                    965: If so, then it declares the given \fIvarname\fR's to be global variables
                    966: rather than local ones.  For the duration of the current procedure
                    967: (and only while executing in the current procedure), any reference to
                    968: any of the \fIvarname\fRs will be bound to a global variable instead
                    969: of a local one.
                    970: .TP
                    971: \fBhistory \fR[\fIoption \fR[\fIarg arg ...\fR]
                    972: .VS
                    973: Note:  this command may not be available in all Tcl-based applications.
                    974: Typically, only those that receive command input in a typescript
                    975: form will support history.
                    976: The \fBhistory\fR command performs one of several operations related to
                    977: recently-executed commands recorded in a history list.  Each of
                    978: these recorded commands is referred to as an ``event''.  When
                    979: specifying an event to the \fBhistory\fR command, the following
                    980: forms may be used:
                    981: .RS
                    982: .IP [1]
                    983: A number:  if positive, it refers to the event with
                    984: that number (all events are numbered starting at 1).  If the number
                    985: is negative, it selects an event relative to the current event
                    986: (\fB-1\fR refers to the previous event, \fB-2\fR to the one before that, and
                    987: so on).
                    988: .IP [2]
                    989: A string:  selects the most recent event that matches the string.
                    990: An event is considered to match the string either if the string is
                    991: the same as the first characters of the event, or if the string
                    992: matches the event in the sense of the \fBstring match\fR command.
                    993: .LP
                    994: The \fBhistory\fR command can take any of the following forms:
                    995: .TP
                    996: \fBhistory\fR
                    997: Re-execute the most recent command in the history list and return
                    998: its result.  This command has the same effect as \fBhistory redo -1\fR.
                    999: .TP
                   1000: \fBhistory add\fI command \fR[\fBexec\fR]
                   1001: Add the \fIcommand\fR argument to the history list as a new event.  If
                   1002: \fBexec\fR is specified (or abbreviated) then the command is also
                   1003: executed and its result is returned.  If \fBexec\fR isn't specified
                   1004: then an empty string is returned as result.
                   1005: .TP
                   1006: \fBhistory change\fI newValue\fR [\fIevent\fR]
                   1007: Replace the value recorded for an event with \fInewValue\fR.  \fIEvent\fR
                   1008: specifies the event to replace, and
                   1009: defaults to the \fIcurrent\fR event (not event \fB-1\fR).  This command
                   1010: is intended for use in commands that implement new forms of history
                   1011: substitution and wish to replace the current event (which invokes the
                   1012: substitution) with the command created through substitution.  The return
                   1013: value is an empty string.
                   1014: .TP
                   1015: \fBhistory event\fR [\fIevent\fR]
                   1016: Returns the value of the event given by \fIevent\fR.  \fIEvent\fR
                   1017: defaults to \fB-1\fR.  This command causes history revision to occur:
                   1018: see below for details.
                   1019: .TP
                   1020: \fBhistory info \fR[\fIcount\fR]
                   1021: Returns a formatted string (intended for humans to read) giving
                   1022: the event number and contents for each of the events in the history
                   1023: list except the current event.  If \fIcount\fR is specified
                   1024: then only the most recent \fIcount\fR events are returned.
                   1025: .TP
                   1026: \fBhistory keep \fIcount\fR
                   1027: This command may be used to change the size of the history list to
                   1028: \fIcount\fR events.  Initially, 20 events are retained in the history
                   1029: list.  This command returns an empty string.
                   1030: .TP
                   1031: \fBhistory nextid\fR
                   1032: Returns the number of the next event to be recorded
                   1033: in the history list.  It is useful for things like printing the
                   1034: event number in command-line prompts.
                   1035: .TP
                   1036: \fBhistory redo \fR[\fIevent\fR]
                   1037: Re-execute the command indicated by \fIevent\fR and return its result.
                   1038: \fIEvent\fR defaults to \fB-1\fR.  This command results in history
                   1039: revision:  see below for details.
                   1040: .TP
                   1041: \fBhistory substitute \fIold new \fR[\fIevent\fR]
                   1042: Retrieve the command given by \fIevent\fR
                   1043: (\fB-1\fR by default), replace any occurences of \fIold\fR by
                   1044: \fInew\fR in the command (only simple character equality is supported;
                   1045: no wild cards), execute the resulting command, and return the result
                   1046: of that execution.  This command results in history
                   1047: revision:  see below for details.
                   1048: .TP
                   1049: \fBhistory words \fIselector\fR [\fIevent\fR]
                   1050: Retrieve from the command given by \fIevent\fR (\fB-1\fR by default)
                   1051: the words given by \fIselector\fR, and return those words in a string
                   1052: separated by spaces.  The \fBselector\fR argument has three forms.
                   1053: If it is a single number then it selects the word given by that
                   1054: number (\fB0\fR for the command name, \fB1\fR for its first argument,
                   1055: and so on).  If it consists of two numbers separated by a dash,
                   1056: then it selects all the arguments between those two.  Otherwise
                   1057: \fBseletor\fR is treated as a pattern;  all words matching that
                   1058: pattern (in the sense of \fBstring match\fR) are returned.  In
                   1059: the numeric forms \fB$\fR may be used
                   1060: to select the last word of a command.
                   1061: For example, suppose the most recent command in the history list is
                   1062: .RS
                   1063: .DS
                   1064: \fBformat  {%s is %d years old} Alice [expr $ageInMonths/12]\fR
                   1065: .DE
                   1066: Below are some history commands and the results they would produce:
                   1067: .DS
                   1068: .ta 4c
                   1069: .fi
                   1070: .UL Command "  "
                   1071: .UL Result
                   1072: .nf
                   1073: 
                   1074: \fBhistory words $     [expr $ageInMonths*12]\fR
                   1075: \fBhistory words 1-2   {%s is %d years  old} Alice\fR
                   1076: \fBhistory words *a*o* {%s is %d years old} [expr $ageInMonths*12]\fR
                   1077: .DE
                   1078: \fBHistory words\fR results in history revision:  see below for details.
                   1079: .RE
                   1080: The history options \fBredo\fR, \fBsubstitute\fR, and \fBwords\fR result
                   1081: in ``history revision''.  If a history command with one of these options
                   1082: can be traced directly to the current history event (e.g. the current
                   1083: event invoked the history command directly or through command
                   1084: substitution), then the current event is modified to eliminate the
                   1085: history command and replace it with the result of the history
                   1086: substitution.  For example, suppose that the most recent command in
                   1087: the history list is
                   1088: .DS
                   1089: \fBset a [expr $b+2]\fR
                   1090: .DE
                   1091: and suppose that the next command invoked is one of the ones on
                   1092: the left side of the table below.  The command actually recorded in
                   1093: the history event will be the corresponding one on the right side
                   1094: of the table.
                   1095: .ne 1.5c
                   1096: .DS
                   1097: .ta 4c
                   1098: .fi
                   1099: .UL "Command Typed" "  "
                   1100: .UL "Command Recorded"
                   1101: .nf
                   1102: 
                   1103: \fBhistory     set a [expr $b+2]\fR
                   1104: \fBhistory s a b       set b [expr $b+2]\fR
                   1105: \fBset c [history w 2] set c [expr $b+2]\fR
                   1106: .DE
                   1107: History revision only occurs for history commands that can be directly
                   1108: traced to the current event.  For example, the command
                   1109: \fBeval history\fR will not result in history revision, because
                   1110: the history command is invoked indirectly by \fBeval\fR.  If history
                   1111: revision is desired in cases like this, it can be achieved by
                   1112: requesting it explicitly with \fBhistory change\fR.
                   1113: .RE
                   1114: .VE
                   1115: .TP
                   1116: \fBif \fItest \fR[\fBthen\fR] \fItrueBody \fR[[\fBelse\fR] \fIfalseBody\fR]
                   1117: The \fIif\fR command evaluates \fItest\fR as an expression (in the
                   1118: same way that \fBexpr\fR evaluates its argument).  If the
                   1119: result is non-zero then \fItrueBody\fR is called by passing it to the
                   1120: Tcl interpreter.  Otherwise \fIfalseBody\fR is executed by passing it to
                   1121: the Tcl interpreter.  The \fBthen\fR and \fBelse\fR arguments are optional
                   1122: ``noise words'' to make the command easier to read.  \fIFalseBody\fR is
                   1123: also optional;  if it isn't specified then the command does nothing if
                   1124: \fItest\fR evaluates to zero.  The return value from \fBif\fR is
                   1125: the value of the last command executed in \fItrueBody\fR or
                   1126: \fIfalseBody\fR, or the empty string if \fItest\fR evaluates to zero and
                   1127: \fIfalseBody\fR isn't specified.
                   1128: .TP
                   1129: \fBindex \fIvalue index \fR[\fBchars\fR]
                   1130: Extract an element from a list or a character from a string.  If the
                   1131: \fBchars\fR keyword isn't specified, then \fBindex\fR treats \fIvalue\fR
                   1132: as a list and returns the \fIindex\fR'th field from it.  In extracting
                   1133: the field, \fIindex\fR observes the same rules concerning braces
                   1134: and backslashes as the Tcl command interpreter;  however, variable
                   1135: substitution and command substitution do not occur.  If \fIindex\fR is
                   1136: greater than or equal to the number of elements in \fIvalue\fR, then the empty
                   1137: string is returned.  If the \fBchars\fR keyword is specified (or any
                   1138: abbreviation of it), then \fIvalue\fR is treated as a string and the
                   1139: command returns the \fIindex\fR'th character from it (or the empty string
                   1140: if there aren't at least \fIindex\fR+1 characters in the string).
                   1141: Index 0 refers to the first element or character of \fIvalue\fR.
                   1142: .TP
                   1143: \fBinfo \fIoption \fR[\fIarg arg ...\fR]
                   1144: Provide information about various internals to the Tcl interpreter.
                   1145: The legal \fIoption\fR's (which may be abbreviated) are:
                   1146: .RS
                   1147: .TP
                   1148: \fBinfo args \fIprocname\fR
                   1149: Returns a list containing the names of the arguments to procedure
                   1150: \fIprocname\fR, in order.  \fIProcname\fR must be the name of a
                   1151: Tcl command procedure.
                   1152: .TP
                   1153: \fBinfo body \fIprocname\fR
                   1154: Returns the body of procedure \fIprocname\fR.  \fIProcname\fR must be
                   1155: the name of a Tcl command procedure.
                   1156: .TP
                   1157: \fBinfo commands \fR[\fIpattern\fR]
                   1158: .VS
                   1159: If \fIpattern\fR isn't specified, returns a list of names of all the
                   1160: Tcl commands, including both the built-in commands written in C and
                   1161: the command procedures defined using the \fBproc\fR command.
                   1162: If \fIpattern\fR is specified, only those names matching \fIpattern\fR
                   1163: are returned.  Matching is determined using the same rules as for
                   1164: \fBstring match\fR.
                   1165: .VE
                   1166: .TP
                   1167: \fBinfo cmdcount\fR
                   1168: Returns a count of the total number of commands that have been invoked
                   1169: in this interpreter.
                   1170: .TP
                   1171: \fBinfo default \fIprocname arg varname\fR
                   1172: \fIProcname\fR must be the name of a Tcl command procedure and \fIarg\fR
                   1173: must be the name of an argument to that procedure.  If \fIarg\fR
                   1174: doesn't have a default value then the command returns \fB0\fR.
                   1175: Otherwise it returns \fB1\fR and places the default value of \fIarg\fR
                   1176: into variable \fIvarname\fR.
                   1177: .TP
                   1178: \fBinfo exists \fIvarName\fR
                   1179: Returns \fB1\fR if the variable named \fIvarName\fR exists in the
                   1180: current context (either as a global or local variable), returns \fB0\fR
                   1181: otherwise.
                   1182: .TP
                   1183: \fBinfo globals \fR[\fIpattern\fR]
                   1184: .VS
                   1185: If \fIpattern\fR isn't specified, returns a list of all the names
                   1186: of currently-defined global variables.
                   1187: If \fIpattern\fR is specified, only those names matching \fIpattern\fR
                   1188: are returned.  Matching is determined using the same rules as for
                   1189: \fBstring match\fR.
                   1190: .TP
                   1191: \fBinfo level\fR [\fInumber\fR]
                   1192: If \fInumber\fR is not specified, this command returns a number
                   1193: giving the stack level of the invoking procedure, or 0 if the
                   1194: command is invoked at top-level.  If \fInumber\fR is specified,
                   1195: then the result is a list consisting of the name and arguments for the
                   1196: procedure call at level \fInumber\fR on the stack.  If \fInumber\fR
                   1197: is positive then it selects a particular stack level (1 refers
                   1198: to the top-most active procedure, 2 to the procedure it called, and
                   1199: so on);  otherwise it gives a level relative to the current level
                   1200: (0 refers to the current procedure, -1 to its caller, and so on).
                   1201: See the \fBuplevel\fR command for more information on what stack
                   1202: levels mean.
                   1203: .TP
                   1204: \fBinfo locals \fR[\fIpattern\fR]
                   1205: If \fIpattern\fR isn't specified, returns a list of all the names
                   1206: of currently-defined local variables, including arguments to the
                   1207: current procedure, if any.
                   1208: If \fIpattern\fR is specified, only those names matching \fIpattern\fR
                   1209: are returned.  Matching is determined using the same rules as for
                   1210: \fBstring match\fR.
                   1211: .TP
                   1212: \fBinfo procs \fR[\fIpattern\fR]
                   1213: If \fIpattern\fR isn't specified, returns a list of all the
                   1214: names of Tcl command procedures.
                   1215: If \fIpattern\fR is specified, only those names matching \fIpattern\fR
                   1216: are returned.  Matching is determined using the same rules as for
                   1217: \fBstring match\fR.
                   1218: .TP
                   1219: \fBinfo tclversion\fR
                   1220: Returns the version number for this version of Tcl in the form \fIx.y\fR,
                   1221: where changes to \fIx\fR represent major changes with probable
                   1222: incompatibilities and changes to \fIy\fR represent small enhancements and
                   1223: bug fixes that retain backward compatibility.
                   1224: .VE
                   1225: .TP
                   1226: \fBinfo vars\fR
                   1227: Returns a list of all the names of currently-visible variables, including
                   1228: both locals and currently-visible globals.
                   1229: .RE
                   1230: .TP
                   1231: \fBlength \fIvalue\fR [\fBchars\fR]
                   1232: If \fBchars\fR isn't specified, treats \fIvalue\fR as a list
                   1233: and returns the number of elements in the list.  If \fBchars\fR
                   1234: is specified (or any abbreviation of it), then \fBlength\fR
                   1235: treats \fIvalue\fR as a string and returns the number of characters
                   1236: in it (not including the terminating null character).
                   1237: .TP
                   1238: \fBlist \fIarg1 \fR[\fIarg2 ...\fR]
                   1239: This command returns a list comprised of all the \fIarg\fRs.  Braces
                   1240: and backslashes get added as necessary, so that the \fBindex\fR command
                   1241: may be used on the result to re-extract the original arguments, and also
                   1242: so that \fBeval\fR may be used to execute the resulting list, with
                   1243: \fIarg1\fR comprising the command's name and the other \fIarg\fRs comprising
                   1244: its arguments.  \fBList\fR produces slightly different results than
                   1245: \fBconcat\fR:  \fBconcat\fR removes one level of grouping before forming
                   1246: the list, while \fBlist\fR works directly from the original arguments.
                   1247: For example, the command
                   1248: .RS
                   1249: .DS
                   1250: \fBlist a b {c d e} {f {g h}}
                   1251: .DE
                   1252: will return
                   1253: .DS
                   1254: \fBa b {c d e} {f {g h}}
                   1255: .DE
                   1256: while \fBconcat\fR with the same arguments will return
                   1257: .DS
                   1258: \fBa b c d e f {g h}\fR
                   1259: .DE
                   1260: .RE
                   1261: .TP
                   1262: \fBprint \fIstring \fR[\fIfile \fR[\fBappend\fR]]
                   1263: .VS
                   1264: Print the \fIstring\fR argument.  If no \fIfile\fR is specified then
                   1265: \fIstring\fR is output to the standard output file.  If \fIfile\fR is
                   1266: specified, then \fIstring\fR is output to that file.  If the \fBappend\fR
                   1267: option is given, then \fIstring\fR is appended to \fIfile\fR;  otherwise
                   1268: any existing contents of \fIfile\fR are discarded before \fIstring\fR
                   1269: is written to the file.
                   1270: .VE
                   1271: .TP
                   1272: \fBproc \fIname args body\fR
                   1273: The \fBproc\fR command creates a new Tcl command procedure,
                   1274: \fIname\fR, replacing
                   1275: any existing command there may have been by that name.  Whenever the
                   1276: new command is invoked, the contents of \fIbody\fR will be executed
                   1277: by the Tcl interpreter.  \fIArgs\fR specifies the formal arguments to the
                   1278: procedure.  It consists of a list, possibly empty, each of whose
                   1279: elements specifies
                   1280: one argument.  Each argument specifier is also a list with either
                   1281: one or two fields.  If there is only a single field in the specifier,
                   1282: then it is the name of the argument;  if there are two fields, then
                   1283: the first is the argument name and the second is its default value.
                   1284: braces and backslashes may be used in the usual way to specify
                   1285: complex default values.
                   1286: .IP
                   1287: When \fIname\fR is invoked, a local variable
                   1288: will be created for each of the formal arguments to the procedure;  its
                   1289: value will be the value of corresponding argument in the invoking command
                   1290: or the argument's default value.
                   1291: Arguments with default values need not be
                   1292: specified in a procedure invocation.  However, there must be enough
                   1293: actual arguments for all the
                   1294: formal arguments that don't have defaults, and there must not be any extra
                   1295: actual arguments.  There is one special case to permit procedures with
                   1296: variable numbers of arguments.  If the last formal argument has the name
                   1297: \fBargs\fR, then a call to the procedure may contain more actual arguments
                   1298: than the procedure has formals.  In this case, all of the actual arguments
                   1299: starting at the one that would be assigned to \fBargs\fR are combined into
                   1300: a list (as if the \fBlist\fR command had been used);  this combined value
                   1301: is assigned to the local variable \fBargs\fR.
                   1302: .IP
                   1303: When \fIbody\fR is being executed, variable names normally refer to
                   1304: local variables, which are created automatically when referenced and
                   1305: deleted when the procedure returns.  One local variable is automatically
                   1306: created for each of the procedure's arguments.
                   1307: Global variables can only be accessed by invoking
                   1308: the \fBglobal\fR command.
                   1309: .IP
                   1310: The \fBproc\fR command returns the null string.  When a procedure is
                   1311: invoked, the procedure's return value is the value specified in a
                   1312: \fBreturn\fR command.  If the procedure doesn't execute an explicit
                   1313: \fBreturn\fR, then its return value is the value of the last command
                   1314: executed in the procedure's body.
                   1315: If an error occurs while executing the procedure
                   1316: body, then the procedure-as-a-whole will return that same error.
                   1317: .TP
                   1318: \fBrange \fIvalue first last \fR[\fBchars\fR]
                   1319: Return a range of fields or characters from \fIvalue\fR.  If the
                   1320: \fBchars\fR keyword isn't specified, then \fIvalue\fR must be
                   1321: a list and \fBrange\fR will return a new list consisting of elements
                   1322: \fIfirst\fR through \fIlast\fR, inclusive.  The
                   1323: special keyword \fBend\fR may be specified for \fIlast\fR; in
                   1324: this case all the elements of \fIvalue\fR starting at \fIfirst\fR
                   1325: are returned.  If the \fBchars\fR keyword, or any abbreviation of
                   1326: it, is specified, then \fBrange\fR treats \fIvalue\fR as a character
                   1327: string and returns characters \fIfirst\fR through \fIlast\fR of
                   1328: it, inclusive.  Once again, the \fBend\fR keyword may be used for
                   1329: \fIlast\fR.  In both cases if a \fIlast\fR value is specified greater
                   1330: than the size of \fIvalue\fR it is equivalent to specifying \fBend\fR;
                   1331: if \fIlast\fR is less than \fIfirst\fR then an empty string is returned.
                   1332: Note: ``\fBrange \fIvalue first first\fR'' does not always produce the
                   1333: same results as ``\fBindex \fIvalue first\fR'' (although it often does
                   1334: for simple fields that aren't enclosed in braces);  it does, however,
                   1335: produce exactly the same results as ``\fBlist [index \fIvalue first\fB]\fR''
                   1336: .TP
                   1337: \fBrename \fIoldName newName\fR
                   1338: .VS
                   1339: Rename the command that used to be called \fIoldName\fR so that it
                   1340: is now called \fInewName\fR.  If \fInewName\fR is an empty string
                   1341: (e.g. {}) then \fIoldName\fR is deleted.  The \fBrename\fR command
                   1342: returns an empty string as result.
                   1343: .VE
                   1344: .TP
                   1345: \fBreturn \fR[\fIvalue\fR]
                   1346: Return immediately from the current procedure
                   1347: .VS
                   1348: (or top-level command or \fBsource\fR command),
                   1349: .VE
                   1350: with \fIvalue\fR as the return value.  If \fIvalue\fR is not specified,
                   1351: an empty string will be returned as result.
                   1352: .VE
                   1353: .TP
                   1354: \fBscan \fIstring format varname1 \fR[\fIvarname2 ...\fR]
                   1355: This command parses fields from an input string in the same fashion
                   1356: as the C \fBsscanf\fR procedure.  \fIString\fR gives the input to
                   1357: be parsed and \fIformat\fR indicates how to parse it, using \fB%\fR
                   1358: fields as in \fBsscanf\fR.  All of the \fBsscanf\fR options are valid;
                   1359: see the \fBsscanf\fR man page for details.  Each \fIvarname\fR gives
                   1360: the name of a variable;  when a field is scanned from \fIstring\fR,
                   1361: the result is converted back into a string and assigned to the
                   1362: corresponding \fIvarname\fR.  The only unusual conversion is for
                   1363: \fB%c\fR;  in this case, the character value is converted to a
                   1364: decimal string, which is then assigned to the corresponding \fIvarname\fR.
                   1365: .VS
                   1366: .TP
                   1367: \fBset \fIvarname \fR[\fIvalue\fR]
                   1368: .VS
                   1369: If \fIvalue\fR isn't specified, then return the current value of
                   1370: \fIvarname\fR.  If \fIvalue\fR is specified, then set
                   1371: .VE
                   1372: the value of \fIvarname\fR to \fIvalue\fR, creating a new variable
                   1373: if one doesn't already exist.  If no procedure is active, then
                   1374: \fIvarname\fR refers to a global variable.  If a procedure is
                   1375: active, then \fIvarname\fR refers to a parameter or local variable
                   1376: of the procedure, unless the \fIglobal\fR command has been invoked
                   1377: to declare \fIvarname\fR to be global.
                   1378: .VE
                   1379: .TP
                   1380: \fBsource \fIfileName\fR
                   1381: Read file \fIfileName\fR and pass the contents to the Tcl interpreter
                   1382: as a sequence of commands to execute in the normal fashion.  The return
                   1383: value of \fBsource\fR is the return value of the last command executed
                   1384: from the file.  If an error occurs in executing the contents of the
                   1385: file, then the \fBsource\fR command will return that error.
                   1386: .VS
                   1387: If a \fBreturn\fR command is invoked from within the file, the remainder of
                   1388: the file will be skipped and the \fBsource\fR command will return
                   1389: normally with the result from the \fBreturn\fR command.
                   1390: If \fIfileName\fR starts with a tilde, then it is tilde-substituted
                   1391: as described in the \fBTcl_TildeSubst\fR manual entry.
                   1392: .VE
                   1393: .TP
                   1394: \fBstring \fIoption a b\fR
                   1395: Perform a string operation on the two operands \fIa\fR and \fIb\fR,
                   1396: based on \fIoption\fR.  The possible options are:
                   1397: .RS
                   1398: .TP
                   1399: \fBstring compare \fIa b\fR
                   1400: Perform a character-by-character comparison of strings \fIa\fR and
                   1401: \fIb\fR, in the same way as the C \fBstrcmp\fR procedure.  Return
                   1402: -1, 0, or 1, depending on whether \fIa\fR is lexicographically
                   1403: less than, equal to, or greater than \fIb\fR.
                   1404: .TP
                   1405: \fBstring first \fIa b\fR
                   1406: Search \fIb\fR for a sequence of characters that exactly match
                   1407: the characters in \fIa\fR.  If found, return the index of the
                   1408: first character in the first such match within \fIb\fR.  If not
                   1409: found, return -1.
                   1410: .TP
                   1411: \fBstring last \fIa b\fR
                   1412: Search \fIb\fR for a sequence of characters that exactly match
                   1413: the characters in \fIa\fR.  If found, return the index of the
                   1414: first character in the last such match within \fIb\fR.  If there
                   1415: is no match, then return -1.
                   1416: .br
                   1417: .VS
                   1418: .TP
                   1419: \fBstring match \fIpattern\fR \fIstring\fR
                   1420: See if \fIpattern\fR matches \fIstring\fR;  return 1 if it does, 0
                   1421: if it doesn't.  Matching is done in a fashion similar to that
                   1422: used by the C-shell.  For the two strings to match, their contents
                   1423: must be identical except that the following special sequences
                   1424: may appear in \fIpattern\fR:
                   1425: .RS
                   1426: .IP \fB*\fR 10
                   1427: Matches any sequence of characters in \fIstring\fR,
                   1428: including a null string.
                   1429: .IP \fB?\fR 10
                   1430: Matches any single character in \fIstring\fR.
                   1431: .IP \fB[\fIchars\fB]\fR 10
                   1432: Matches any character in the set given by \fIchars\fR.  If a sequence
                   1433: of the form
                   1434: \fIx\fB\-\fIy\fR appears in \fIchars\fR, then any character
                   1435: between \fIx\fR and \fIy\fR, inclusive, will match.
                   1436: .IP\fB\e\fIx\fR 10
                   1437: Matches the single character \fIx\fR.  This provides a way of
                   1438: avoiding the special interpretation of the characters
                   1439: \fB*?[]\e\fR in \fIpattern\fR.
                   1440: .RE
                   1441: .RE
                   1442: .VE
                   1443: .IP
                   1444: Unique abbreviations for \fIoption\fR are acceptable.
                   1445: .TP
                   1446: \fBtime \fIcommand\fR [\fIcount\fR]
                   1447: This command will call the Tcl interpreter \fIcount\fR
                   1448: times to execute \fIcommand\fR (or once if \fIcount\fR isn't
                   1449: specified).  It will then return a string of the form
                   1450: .RS
                   1451: .DS
                   1452: \fB503 microseconds per iteration\fR
                   1453: .DE
                   1454: which indicates the average amount of time required per iteration,
                   1455: in microseconds.
                   1456: Time is measured in elapsed time, not CPU time.
                   1457: .RE
                   1458: .TP
                   1459: \fBuplevel \fR[\fIlevel\fR]\fI command \fR[\fIcommand ...\fR]
                   1460: .VS
                   1461: All of the \fIcommand\fR arguments are concatenated as if they had
                   1462: been passed to \fBconcat\fR;  the result is then evaluated in the
                   1463: variable context indicated by \fIlevel\fR.  \fBUplevel\fR returns
                   1464: the result of that evaluation.  If \fIlevel\fR is an integer, then
                   1465: it gives a distance (up the procedure calling stack) to move before
                   1466: executing the command.  If \fIlevel\fR consists of \fB#\fR followed by
                   1467: a number then the number gives an absolute level number.  If \fIlevel\fR
                   1468: is omitted then it defaults to \fB1\fR.  \fILevel\fR cannot be
                   1469: defaulted if the first \fIcommand\fR argument starts with a digit or \fB#\fR.
                   1470: For example, suppose that procedure \fBa\fR was invoked
                   1471: from top-level, and that it called \fBb\fR, and that \fBb\fR called \fBc\fR.
                   1472: Suppose that \fBc\fR invokes the \fBuplevel\fR command.  If \fIlevel\fR
                   1473: is \fB1\fR or \fB#2\fR  or omitted, then the command will be executed
                   1474: in the variable context of \fBb\fR.  If \fIlevel\fR is \fB2\fR or \fB#1\fR
                   1475: then the command will be executed in the variable context of \fBa\fR.
                   1476: If \fIlevel\fR is \fB3\fR or \fB#0\fR then the command will be executed
                   1477: at top-level (only global variables will be visible).
                   1478: The \fBuplevel\fR command causes the invoking procedure to disappear
                   1479: from the procedure calling stack while the command is being executed.
                   1480: In the above example, suppose \fBc\fR invokes the command
                   1481: .RS
                   1482: .DS
                   1483: \fBuplevel 1 {set x 43; d}
                   1484: .DE
                   1485: where \fBc\fR is another Tcl procedure.  The \fBset\fR command will
                   1486: modify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute
                   1487: at level 3, as if called from \fBb\fR.  If it in turn executes
                   1488: the command
                   1489: .DS
                   1490: \fBuplevel {set x 42}
                   1491: .DE
                   1492: then the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's
                   1493: context:  the procedure \fBc\fR does not appear to be on the call stack
                   1494: when \fBd\fR is executing.  The command ``\fBinfo level\fR'' may
                   1495: be used to obtain the level of the current procedure.
                   1496: \fBUplevel\fR makes it possible to implement new control
                   1497: constructs as Tcl procedures (for example, \fBuplevel\fR could
                   1498: be used to implement the \fBwhile\fR construct as a Tcl procedure).
                   1499: .VE
                   1500: .RE
                   1501: 
                   1502: .VS
                   1503: .SH "BUILT-IN VARIABLES"
                   1504: .PP
                   1505: The following global variables are created and managed automatically
                   1506: by the Tcl library.  These variables should normally be treated as
                   1507: read-only by application-specific code and by users.
                   1508: .TP
                   1509: \fBerrorInfo\fR
                   1510: After an error has occurred, this string will contain two or more lines
                   1511: identifying the Tcl commands and procedures that were being executed
                   1512: when the most recent error occurred.
                   1513: .TP
                   1514: \fBnoAbbrev\fR
                   1515: If this variable has the value \fB1\fR then abbreviations are disallowed
                   1516: for command names.  If the variable doesn't exist or has a value other
                   1517: than \fB1\fR then abbreviations are permitted.
                   1518: .VE
                   1519: 
                   1520: .SH AUTHOR
                   1521: John Ousterhout, University of California at Berkeley ([email protected])

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.