Your initialisation effort happens after the error occurs. But I really wanted to stick my oar in here because technically speaking my $fred = undef() counts as an initialisation to an undefined value, so the error ought to say undefined instead of uninitialised or maybe someone already tried to correct the same implied confusion from that, in which case perhaps "(re-) undefined" would finally catch it all.