Для краткого описания типа передаваемых подпрограмме параметров можно применять прототипы. В Perl существуют следующие прототипы:
| sub mylink($$) | mylink $old, $new |
| sub myvec($$$) | myvec $var, $offset, 1 |
| sub myindex($$;$) | myindex &getstring, "substr" |
| sub myreverse(@) | myreverse $a, $b, $c |
| sub myjoin($@) | myjoin ":",$a,$b,$c |
| sub mypop(\@) | mypop @array |
| sub mysplice(\@$$@) | mysplice @array, @array, 0, @pushme |
| sub mykeys(\%) | mykeys %{$hashref} |
| sub myopen(*;$) | myopen HANDLE, $name |
| sub mypipe(**) | mypipe READHANDLE, WRITEHANDLE |
| sub mygrep(&@) | mygrep { /foo/ } $a, $b, $c |
| sub myrand($) | myrand 42 |
| sub mytime() | mytime |
Здесь: