Ronald J Kimball <rjk@linguist.dartmouth.edu> wrote > At 12:14 26/10/99 -0400, Jeff Pinyan wrote: > >Why does > > > > sub foo (;$); > > print foo $a, $b; > > > >whine that foo has too many arguments? > > I might expect that to be parsed as: > > print foo($a), $b; Me too! :-) And I thought "Hey - that's all documented in perlsub" and went to look it up. I expected to find an example like sub mylength(;$) mylength $a but it wasn't there. Instead there was sub myrand ($) myrand 42 But I can write print rand,rand; and it Does The Right Thing. Whereas if I write sub myrand($) { rand() }; print myrand,myrand; I get syntax error at - line 2, near "myrand," So there seems to be a serious confusion between the prototypes (;$) and ($). The builtins such as length() and rand() behave as if they had prototype (;$), but are documented as having ($). And a user defined subroutine can't imitate them with either prototype. Mike Guy