Есть хеши: %en_US, %ru_RU. Делаю их экспорт. Простой вариант вот:
our @ISA = qw(Exporter);
our @EXPORT = qw(%en_US, %ru_RU, %pt_PT);
1 - Как можно более красиво/правильно/элегантно написать вот такое - экспортировать не прямо список, а на ходу список склеить из массива? Рабочий вариант вот, но режет глаз:
my @langsIdPool = ('%en_US', '%ru_RU');
our @ISA = qw(Exporter);
our @EXPORT = split(' ', join(" ", @langsIdPool));2 - Вопрос аналогичный: можно ли элегантнее переписать вот это:
my @langsIdPool = ('%en_US', '%ru_RU');
map {
my %hash = eval $_;
Hash::Util::lock_hash_recurse( %hash);
} @langsIdPool;3 - Супер вопрос: а как в модуле собрать в массив все имена хешей из этого модуля?
У меня есть некая задумка: есть модуль с хешами переводов ифейса на разные языки. И я хеши не только экспортирую, но и ещё, перед экспортом, делаю с каждым хешем несколько однотипных действий. Отсюда и вопросы.
Чую ошибки проектирования.
> our @EXPORT = qw(%en_US, %ru_RU, %pt_PT);А если их будет штук двести, тоже все экспортировать? Не проще ли обойтись хешем, где ключи - коды языков, а значения - ссылки на ваши хеши? Тогда и остальные вопросы отпадут сами собой.
> А если их будет штук двести, тоже все экспортировать?А всё равно остаётся два места, где язык добавляется, удаляется. Т.е. хеш с именами=>ссылками-контентом и сами хеши с контентом . Всё равно два раза по "двести".
> Не проще ли обойтись хешем, где ключи - коды языков, а значения - ссылки
> на ваши хеши? Тогда и остальные вопросы отпадут сами собой.Но, спасибо, хеш хешей более правильно, т.к. код из головного поста потребует фокусов с use strict.
P.S. Как в анекдоте, со временем я заметил, что "our @EXPORT = ..." - это массив, куда можно делать push() в разных местах. В т.ч. делая обход ключей (id языков) в, позднее предложенном, хеше хешей.