The following (flawed, see below) experiment (prints out the memory location of the static hash) seems to suggest that Perl indeed creates the hash only once:
#!/usr/bin/perl
sub static_hash {
print { one => 1, two => 2 };
print $/;
}
static_hash;
static_hash;
static_hash;
planz$ perl /tmp/static.pl
HASH(0x1801380)
HASH(0x1801380)
HASH(0x1801380)
Update:
Okay, forget about that, this just shows that a hash gets created in the same memory location. It could still be a new hash every time. In fact, changing the experiment to
use a fresh hash yields exactly the same output:
#!/usr/bin/perl
sub static_hash {
print { one => $_[0], two => time };
print $/;
}
static_hash(8);
static_hash(9);
static_hash(10);