sub prototyped($_;$) { # Here $_[0] is a compulsory argument # $_[1] defaults to $_ # $_[2] may not even exist } sub unprototyped { push @_, $_ if @_ < 2; # Here $_[0] is a compulsory argument # $_[1] defaults to $_ # $_[2] may not even exist }