1.7. Operators
NASL
provides arithmetic, comparison, and assignment operators. These
operators are explained in the following sections.
1.7.1. Arithmetic Operators
Here are the common arithmetic operators:
 +

Used to add numbers. It can also be used to perform string
concatenation.



Used to perform subtraction. It can also be used to perform string
subtraction. For example, 'cat, dog, mouse'  ',
dog' results in the string 'cat, mouse'.
 *

Used to multiply numbers.
 /

Used to divide numbers. Note that NASL will return a 0 if you try to
divide by zero.
 %

Used to perform a modulo operation. For example,
10%3 computes to 1.
 **

Used to perform exponentiation. For example, 2**3
computes to 8.
 ++

Used to increment a variable's value by 1. When a
variable is prefixed by this operator (example:
++c), its value is incremented before it is
evaluated. When a variable is postfixed by this operator (example:
c++), its value is incremented after it is
evaluated.

Used to decrement a
variable's value by 1. When a variable is prefixed
by this operator (example: c), its value is
decremented before it is evaluated. When a variable is postfixed by
this operator (example: c), its value is
decremented after it is evaluated.
1.7.2. Comparison Operators
Here are the common
comparison operators:
 >

Used to test whether a given value is greater than the other.
 >=

Used to test whether a given value is greater than or equal to the
other.
 <

Used to test whether a given value is less than the other.
 <=

Used to test whether a given value is less than or equal to the other.
 ==

Used to test whether a given value is equal to the other.
 !=

Used to test whether a given value is not equal to the other.
 ><

Used to test whether a given substring exists within a string. For
example, '123'><'abcd123def' evaluates to
TRUE.
 >!<

Used to test whether a given substring does not exist within a
string. In this case, '123'>!<'abcd123def'
evaluates to FALSE.
 =~

Used to match a regular expression. Using this operator is similar to
calling the ereg( ) function call, which performs
a similar operation. For example, the statement str =~
'^[GET / HTTP/1.0\r\n\r\n][.]*') evaluates to
TRUE only if str begins with
the string GET / HTTP/1.0\r\n\r\n.
 !~

Used to test whether a regular expression does
not match. It is the opposite of the
=~ operator.
 []

Used to select a character from a
string by index. For
example, if mystring is a1b2c3,
mystring[3] evaluates to 2.
1.7.3. Assignment Operators
Here are the common
assignment operators:
 =

Used to assign a value to a variable.
 +=

Used to increment a variable's value. For example,
a += 3
increments the value of a by 3, and is equivalent
to the statement a =
a + 3.
 =

Used to decrement a variable's value. For example,
a =3 decrements
the value of a by 3, and is equivalent to the
statement a = a
 3.
 *=

Used to multiply a variable's value by a specified
value. For example, a *=
3 causes the variable a to be
assigned a value equal to itself multiplied by 3, and is equivalent
to the statement a =
a * 3.
 /=

Used to divide a variable's value by a specified
value. For example, a /=3
causes the variable a to be assigned a value equal
to itself divided by 3, and is equivalent to the statement
a = a
/ 3.
 %=

Used to assign a variable a value equal to the remainder of a
division operation between itself and a specified value. For example,
a %=3 causes the variable
a to be assigned a value that is equal to the
remainder of the operation a/3, and is equivalent
to the statement a =
a %
3.
