Это на самом деле не специфическая для Perl проблема, а вопрос понимания процессов в стиле Unix. Когда вы fork
новый процесс, по умолчанию ни одна из памяти не распределяется между процессами. Есть несколько способов добиться того, чего вы хотите, в зависимости от того, что вам нужно.
Одним простым способом было бы использовать что-то вроде BerkeleyDB , чтобы связать хеш с файлом на диске. Связанный хэш может быть инициализирован до того, как вы разветвитесь, и тогда каждый дочерний процесс получит к нему доступ. Файлы BerkeleyDB предназначены для безопасного доступа к нескольким процессам одновременно.
Более сложным методом было бы использование некоторой формы межпроцессного взаимодействия. Все подробности о том, как этого добиться, см. На справочной странице perlipc , в которой подробно рассказывается о нескольких методах IPC, поддерживаемых Perl.
Последний подход, если ваш Perl поддерживает это, - это использовать потоки и делить переменные между ними.