WITCH star


"splat", "dont care", "whatever"

-- used when you do not care or want a sensible "largest default"

Used alone

* can be used like you always have, for multiplication
* just about anywhere else, is means whatever
* within a version number functions as a wildcard
* in a switch statement when clause is a synonym for default

As a twigil

* between a sigil and its identifier name denotes a contextualized variable, which is searched for in the nearest dynamic scope (including the processes environment, if not found sooner)

Operators containing this character

*= mutant assignment form of multiplication
** and **= can be used like you always have, for exponentiation
** just about anywhere else is a multidimensional whatever (see above)
.* calls all methods if there are duplicate method names
[*-1] as an array index not special syntax but is legal use of "whatever" to get at the last element of an array.

When used inside regexes

* and *? as a "0 or more" repeat count
** and **? is the new general repetition specifier (takes the place of {N.M})

Other Uses

* in a prototype designates an array or hash as slurpy

Hyper operator and meta operator restrictions

Generally as the core operator in any meta or hyper operator, * takes its multiplicative meaning.

Old, deprecated, or other language uses