in reply to Autovivification of scalars in sub calls

Incidentally, builtin functions do not provide a similar service:

Some builtin functions do. scalar (your example) doesn't, as it never changes its arguments. However, grep does which caused a strange bug for me once: Aliasing bites.