I've already realized what this is just symbolic reference
No, it isn't. A symbolic ref uses the string in the variable as the name of a package variable:
my $f = "foo";
our $foo = "blah";
print $$f;
__OUTPUT__
blah
The behavior you're seeing in your example code is autovivification. You tell Perl that you want a hashref, so you get one. This behavior is forbidden by use strict 'refs'. For that, you should explicitly put a hashref into the variable, such as with my $var = { }; or my $var = \%hash;.
----
: () { :|:& };:
Note: All code is untested, unless otherwise stated
|