2.5.2. Operatory

Mniejsze wyrażenia można łączyć ze sobą w większe dzięki operatorom. Operator pobiera wartości wyrażeń po swej lewej i prawej stronie, a następnie na ich podstawie sam produkuje wartość. Przykładem jest $a + $b, gdzie sumujemy wartości w blokach $a oraz $b. Gdyby coś takiego osadzić w szablonie, w danym miejscu wyświetliłaby nam się suma. Istnieje też niewielki zestaw operatorów działających tylko na jednym argumencie (np. $a++, który zwraca wartość bloku $a, a następnie powiększa ją o 1).

W OPT część operatorów posiada dwie formy zapisu - symboliczną oraz tekstową. Można z nich korzystać zamiennie. W przypadku formy tekstowej kompilator potrafi rozpoznać jej użycie z kontekstu. Jeżeli wpisalibyśmy "eq" w miejscu, gdzie spodziewany jest ciąg tekstowy, zostanie on obsłużony jako napis, a nie jako operator.

Tabela 2.1. Lista operatorów

Lista operatorów
Symoliczny Tekstowy Przykład Opis
== eq $a == $b prawda, gdy $a jest równe $b
!= neq $a != $b prawda, gdy $a nie jest równe $b
=== eqt $a === $b prawda, gdy $a jest równe $b i oba wyrażenia mają ten sam typ
!== neqt $a !== $b prawda, gdy $a nie jest równe $b lub oba wyrażenia mają różne typy
  gt $a > $b prawda, gdy $a jest większe niż $b
  lt $a < $b prawda, gdy $a jest mniejsze niż $b
  gte, ge $a >= $b prawda, gdy $a jest większe lub równe $b
  lte, le $a <= $b prawda, gdy $a jest mniejsze lub równe $b
  and $a and $b prawda, gdy $a i $b są prawdziwe
  or $a or $b prawda, gdy $a lub $b lub oba naraz są prawdziwe
  xor $a xor $b prawda, gdy $a lub $b jest prawdziwe, lecz nie oba naraz.
! not ! $a prawda, gdy $a jest fałszywe
+ add $a + $b suma $a i $b
- sub $a - $b różnica $a i $b
* mul $a * $b iloczyn $a i $b
/ div $a / $b iloraz $a i $b
% mod $a % $b reszta z dzielenia $a przez $b
++   $a++, ++$a zwraca wartość $a, a następnie zwiększa ją o 1 lub najpierw zwiększa o 1, a później zwraca.
--   $a--, --$a zwraca wartość $a, a następnie zmniejsza ją o 1 lub najpierw zmniejsza, a później zwraca.
~   $a ~ $b Łączenie ciągów tekstowych.
= is @a is $b przypisuje wartość wyrażenia po prawej zmiennej lub blokowi po lewej