use threads; use threads::shared; my %hashOf1000SharedHashes = map{ $_ => &share({}) } 1 .. 1000; my %data:shared; foreach my $x (1..5000) { $data{$x} = shared_clone( \%hashOf1000SharedHashes ); } undef %hashOf1000SharedHashes;