Anything evaluating to integer. As argument, any scalar value allowed (implicitly coerced to integer).
Anything evaluating to float. As argument, any scalar value allowed (implicitly coerced to float).
Anything evaluating to integer or float. As argument, any scalar value allowed (implicitly coerced to number).
Anything evaluating to string. As argument, any scalar value allowed (implicitly coerced to string).
Anything treated as boolean condition.
As argument: 0, "" and undef as false; or anything other as true.
As result: exactly 0 (as false) or 1 (as true).
Anything treated as result of comparison.
As argument: any scalar value allowed (implicitly coerced to number, then compared with 0).
As result: exactly -1 (negative/less than), 1 (positive/greater than), or 0 (zero/equal).
Anything evaluating to scalar (number or string) value.
Range of integers, confined in boundary list (Start, End),
Range includes values, for which Start <= value && value < End (or empty, if Start >= End).
If single scalar value N is supplied, range 0..N is assumed.
Anything evaluating to mutable.
(Reports error, if argument is immutable.)
Anything evaluating to list (allows all atomic values and undef, as trivial lists).
Anything evaluating to term expression.
Anything evaluating to block expression.
Anything evaluating to array.
(Reports error, if argument is not array.)
Anything evaluating to hash.
(Reports error, if argument is not hash.)
Anything evaluating to pattern.
(Allows string, which is implicitly converted to string pattern.)
(Reports error, if argument is not pattern.)
Anything evaluating to instance of arbitrary class.
(Reports error, if argument is not class instance.)
Anything evaluating to functor reference (including builtins, user functors, classes and virtuals).
Subset of Func: anything evaluating to class reference.
Subset of Func: anything evaluating to virtual reference.
Anything evaluating to input/output stream reference.
|Any type allowed|
No constraints implied.
Total: 21 metatypes.