Team LiB
Previous Section Next Section

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 post-fixed 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 post-fixed 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.

    Team LiB
    Previous Section Next Section