home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 0 / 0997 / Tcl.1 < prev    next >
Text File  |  1990-12-28  |  53KB  |  1,289 lines

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