http://qs321.pair.com?node_id=559913


in reply to Does Perl do constant anonymous hash creation optimisation?

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);