in reply to Why does eof have a prototype?

Note however that some built-ins can't have their syntax expressed by a prototype (such as system or chomp). If you override them you won't be able to fully mimic their original syntax.

IMHO the first sentence doesn't apply here because eof's syntax can be expressed by a prototype - this is also the reason why I personally am not bothered by the fact it does have a protoype. The second sentence only applies because AFAIK there isn't a built-in way for functions to know whether they were called with parens or not, but this has nothing to do with the prototype.