The Klingon language was first explained to Terrans in 1984 by Earth-born linguist Dr Marc Okrand. Those who dare can learn more about it at the Klingon Language Institute (www.kli.org).

The word order in Klingon sentences is I-O-V-S: indirect object, (direct) object, verb, subject. For example:

luSpetna'vaD vay' vIghItlh jIH

to-STDERR something write I

Naturally, commands given in the imperative form are far more common in Klingon. In imperative statements, such as those used for programming instructions, word order becomes I-O-V: indirect object, (direct) object, (imperative) verb:

luSpetna'vaD vay' yIghItlh!

to-STDERR something (I order you to) write!

Thus, for programming, Klingon is inherently a Reverse Polish notation.

So in Klingon scalars and arrays can have the same root name (just as in regular Perl):

vay' ---> $something

vay'mey ---> @something

The -mey suffix only refers to things incapable of speech. If the somethings had been articulate, the inflection would be:

luSpetna'vaD vay'pu' yIghItlh!

From a certain point-of-view, this parallels the difference between an array and a hash: arrays are subscripted mutely, with dumb integers; whereas hashes are subscripted eloquently, with quoted strings. Since hashes are thus in some sense "articulate", they are inflected with the -pu' suffix:

All the variables shown above were written in the (uninflected) accusative case. This is because they were used as direct objects (i.e. as data).

When variables are assigned to, they become indirect objects of the assignment (give the weapon to me). This means that targets of assignment (or any other form of modification) must be specified in the dative case, using the -vaD suffix: