upvar man page on BSDi

Printed from http://www.polarhome.com/service/man/?qf=upvar&af=0&tf=2&of=BSDi



upvar(n)	      Tcl Built-In Commands		 upvar(n)

_________________________________________________________________

NAME
       upvar - Create link to variable in a different stack frame

SYNOPSIS
       upvar ?level? otherVar myVar ?otherVar myVar ...?
_________________________________________________________________

DESCRIPTION
       This command arranges for one or more local  variables  in
       the  current procedure to refer to variables in an enclos-
       ing procedure call or to global variables.  Level may have
       any  of	the  forms permitted for the uplevel command, and
       may be omitted if the first letter of the  first	 otherVar
       isn't  # or a digit (it defaults to 1).	For each otherVar
       argument, upvar makes the variable by  that  name  in  the
       procedure  frame	 given	by  level (or at global level, if
       level is #0) accessible in the current  procedure  by  the
       name given in the corresponding myVar argument.	The vari-
       able named by otherVar need not exist at the time  of  the
       call;   it  will be created the first time myVar is refer-
       enced, just like an ordinary  variable.	 There	must  not
       exist  a	 variable  by the name myVar at the time upvar is
       invoked.	 MyVar is always treated as the name of	 a  vari-
       able,  not  an array element.  Even if the name looks like
       an array element, such as a(b), a regular variable is cre-
       ated.   OtherVar may refer to a scalar variable, an array,
       or an array element.  Upvar returns an empty string.

       The upvar command simplifies the implementation	of  call-
       by-name	procedure  calling  and	 also  makes it easier to
       build new control constructs as Tcl procedures.	For exam-
       ple, consider the following procedure:
	      proc add2 name {
		upvar $name x
		set x [expr $x+2]
	      }
       Add2  is	 invoked  with	an  argument giving the name of a
       variable, and it adds two to the value of  that	variable.
       Although	 add2  could  have been implemented using uplevel
       instead of upvar, upvar	makes  it  simpler  for	 add2  to
       access the variable in the caller's procedure frame.

       If  an upvar variable is unset (e.g. x in add2 above), the |
       unset operation affects the variable it is linked to,  not |
       the  upvar  variable.   There  is no way to unset an upvar |
       variable except by exiting the procedure in  which  it  is |
       defined.	  However,  it	is  possible to retarget an upvar |
       variable by executing another upvar command.		  |

Tcl								1

upvar(n)	      Tcl Built-In Commands		 upvar(n)

BUGS								  |
       If otherVar refers to an element of an array,  then  vari- |
       able  traces  set for the entire array will not be invoked |
       when myVar is accessed (but traces on the particular  ele- |
       ment  will still be invoked).  In particular, if the array |
       is env, then changes made to myVar will not be  passed  to |
       subprocesses correctly.

KEYWORDS
       context, frame, global, level, procedure, variable

Tcl								2

[top]

List of man pages available for BSDi

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net