User Tools

Site Tools


lval

# $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)