Arguments to subs are lvalues, and lvalues autovivify. Feature.
in reply to Autovivification of scalars in sub calls
Incidentally, you can also induce lvalue context by taking a reference. Interestingly, this program generates a warning about Useless use of reference constructor, but without taking the reference, it dies on the undefined value.
It should go without saying that using these side-effects to initialize is not a good programming practice.
Caution: Contents may have been coded under pressure.