Nicholas Clark <[EMAIL PROTECTED]> wrote: > Strictly all I have done is caused defined %foo::bar:: to always be true. > Specifically, if a symbol table is created, it is now always "defined". > Whereas previously it was only defined if storage had been allocated.
Yes. And given the benefits my inclination would be to keep your change in blead and document it in perldelta. > (I think. Whatever the regular rules for a hash being defined) > > Replace > > defined %foo::bar:: > > with > > defined *foo::{HASH}->{'bar::'} > > and all will still work as expected, both in blead and earlier versions. > That syntax is warnings free and strict safe. > > (This is because merely mentioning %foo::bar:: in the script causes the > tokeniser to create the symbol table. The change in blead is that symbol > tables are now being stored in such a way that their extra data is being > hung from the hash's array, rather than burdening *every single hash*, > so creating the symbol table is also allocating the array there and then)