Prototypes allow you to design your subroutines to take arguments with constraints on the number of parameters and types of data. To declare a function with prototypes, use the prototype symbols in the declaration line like this:
sub addem ($$) { ... }
In this case, the function expects two scalar arguments. The following table gives the various prototype symbols :
A backslash placed before one of these symbols forces the argument to be that exact variable type. For instance, a function that requires a hash variable would be declared like this:
sub hashfunc (\%);
Unbackslashed @
or %
symbols act exactly alike and will eat
up all remaining arguments, forcing list context. Likewise, a
$
forces scalar context on an
argument, so taking an array or hash variable for that parameter
would probably yield unwanted results.
A semicolon separates mandatory arguments from optional arguments. For example:
sub newsplit (@$;$);
requires two arguments: an array variable and a scalar. The
third scalar is optional. Placing a semicolon before @
and %
is not necessary since lists can be null.
A typeglob prototype symbol (*
) will always turn its argument into a
reference to a symbol table entry. It is most often used for
filehandles.
3.133.158.32