Если вы хотите только прочитать значения %config
, то почему бы не сделать процедуру для вас?
my %config;
sub config_value
{
my ($value) = @_;
return $config{$value};
}
Вы можете экспортировать это по умолчанию, если хотите:
package Mypackage;
require Exporter;
@EXPORT = qw/config_value/;
Причина, по которой я не разрешил бы доступ к хешу повсеместно во многих различных модулях, заключается в том, что мне было бы трудно мысленно отслеживать все места, которые он использовал. Я предпочел бы сделать вышеупомянутую подпрограмму доступа, чтобы, если произошла какая-то ошибка, я мог добавить оператор print к подпрограмме или что-то еще, чтобы узнать, когда происходит доступ к значению. Я не знаю, связано ли это с «лучшими практиками» или это просто потому, что я тупой, но такая путаница, создаваемая глобальными переменными, пугает меня.
Нет причин, по которым у вас не может быть заданной процедуры:
sub set_value
{
my ($key, $value) = @_;
$config{$key} = $value;
}