in reply to lazy map question

Substitute this for your map

do{ my %h; @h{ 0 .. $#a } = @a; %h };

Or better, omit the curlies around the map and pass the reference direct.

do{ my %h; @h{ 0 .. $#a } = @a; \%h };

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail