Rulz Programming Language

Rulz and Rulz Language is Copyright © G.A.Jennings, 2015-2022.

This is language specification 2-1/2; last updated 24 June 2022.

This document is slighty out of date.

Rulz Variables

Rulz user variables are one or more lowercase letters. They are assigned by the set operator and referenced with $. Like PHP, variables can have any type.

= var 100
= var "foo"
= var (1,2,3)
^ value is $var

Special Variables

Like Perl, Rulz has "Special Variables". Unlike Perl none have named versions nor have any associated mnemonics.

$0                      default or return value for some operators and builtins
$_                      default or return value for some operators and builtins
$.                      end of line terminator ('<br>' or "\n")
$;                      argument separator for the print function (' ')
$,                      array separator for the print function (',')
$[                      PHP version string
$]                      Rulz code version string
$|                      Rulz language version string
$^                      debugging value (see CLI)
$$                      CLI program name ('./rulz')
$1-9                    search subexpression matches
$&                      string that matched for search
$#                      number of matches for search
$`                      loaded Rules file name
$/                      value of __DIR__ (with appended directory separator)
$}                      name of running loop
$>                      TRUE if running in a terminal
$~                      currently running Rule name
$-                      current rule string
$<                      previous rule string
$=                      current Rule line number
$!                      last Rulz error string
$%                      error diagnostic rule - run upon error
$*                      string derived from the uname function
$+                      exec/system command output
$(                      the key for @each
$)                      the value for @each

Special variables can be assigned like variables, without the $.

= , ', '                set $, to the string ', '
= ^ 1                   set $^ to 1

(A space after = is only required to avoid ambiguity with operators that begin with =.) A few special variables are read only.

Special Array Variables

@!                      hash of all special variables
@$                      hash of all variables
@%                      hash of all internal variables
@&                      list of a subroutine names

These are read only and useful only for diagnostic purposes.

Super Globals

Like PHP, Rulz has some "Super Globals", but in name only and are referenced by name preceded with the @ operator followed that the variable name, with an optional value for assignment.

Environment Variables

@ENV                    hash of all environment variables
@ENV HOME               read variable
@ENV FOO BAR            set variable

Server Variables

@SERVER                 hash of all server variables
@SERVER SCRIPT_NAME     read variable

(PHP version only.)

Input Variables

@GET
@POST

(PHP version only.)

Rulz Variables

Also called "Internal Variables", these are like Shell variables. They are interpolated in double quoted strings. Most are read only.

$ARGS                   arguments passed to program
$HOME                   same as @ENV HOME
$INC                    include path
$PATH                   same as @ENV PATH
$CWD                    result of getcwd()
$PWD                    previous working directory (cd)
$RAND                   random number
$TIME                   current timestamp

The assignment operator is used to set an internal variable.

= LOOPMAX 100

Most internal variables are read only.