User Tools

Site Tools


lval

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

lval [2007/08/06 21:25] (current)
Line 1: Line 1:
 +# $EPIC: lval.txt,v 1.1 2007/08/06 21:25:50 jnelson Exp $
 +
 +======Lvalues (aka lvals)======
 +An lvalue is the token on the left hand side of an assignment operation.
 +More broadly speaking, an lvalue is a //thing// that may be //assigned to//.
 +
 +There are several places where you use an lvalue:
 +| /assign **lval** stuff | Global variable to be assigned a value |
 +| /local **lval** stuff | Local variable to be assigned a value |
 +| @ **lval** = stuff | Global variable to be assigned a value |
 +| /stub assign **lval** filename | Global variable to be loaded on demand |
 +| $unshift(**lval** stuff) | Prepending to a global variable |
 +| /unshift **lval** stuff | Prepending to a global variable |
 +| $push(**lval** stuff) | Appending to a global variable |
 +| /push **lval** stuff  | Appending to a global variable |
 +| $shift(**lval** stuff) | Prepending to a global variable |
 +| /shift **lval** stuff | Prepending to a global variable |
 +| $pop(**lval** stuff) | Prepending to a global variable |
 +| /pop **lval** stuff | Prepending to a global variable |
 +| $aliasctl(SET **lval** ...)  | |
 +| @ **lval**++ | |
 +| @ **lval**-- | |
 +| Any math operator that does an assignment | |
 +| $splice(**lval** stuff) | |
 +| $shiftbrace(**lval**) | |
 +| $sar(r/​old/​new/​**lval**) | |
 +| $msar(r/​old/​new/​**lval**) | |
 +| $getopt(...) | |
 +| /fe (...) **lvals** {...} | |
 +| /fe :**lval** (...) **lvals** {...} | |
 +| Arglists | |
 +
 +======What an lvalue looks like======
 +An lvalue may be prefixed with zero, one, or two colons:
 +   * Zero colons means use a local variable if there is one, otherwise use a global variable.
 +   * One colon means use a local variable only
 +   * Two colons means use a global variable only
 +
 +An lvalue contains any number of characters:
 +   * Any isalpha(3) character
 +   * Any isdigit(3) character
 +   * The underscore ("​_"​)
 +   * The dot ("​."​)
 +
 +Followed by any number of //array subexpressions//,​ which are any text 
 +expression surrounded by square brackets. ​ There are no restrictions on 
 +what may be inside an array subexpression.
 +
 +======Examples:​======
 + /assign myvar one
 + /echo $myvar ​                 ​
 +Will output "​one"​
 +
 + /local myvar two
 + /echo $myvar ​                 ​
 +Will output "​two"​ because local variables overrule global variables
 +
 + /echo $::myvar
 +Will output "​one"​ because two colons forces the global variable to be used.
 +
 + /assign :othervar one
 +Creates a //local// variable, because one colon is prefixed.
 +
 + /assign ::othervar two
 +Creates a //global// variable, because two colons are prefixed.
 +
 + /assign othervar three
 +Changes the //local// variable, because local variables overrule global vars.
 +
 + @ myvar$testing = [one]
 +Invalid because ​ $'s are not allowed in variable names
 +
 + @ myvar[$testing] = [one]
 +Allowed, because array subexpressions can contain any text expression.
 +Please note that //array subexpressions//​ are part of the **lval** and
 +are always treated as text, even in an expression!
 +
 + @ myvar.$function() = [one]
 +Invalid, because no $'s are permitted
 +
 + @ myvar[$function()] = [one]
 +Permitted, because the array subexpression can contain any text.
 +
 +
  
lval.txt ยท Last modified: 2007/08/06 21:25 (external edit)