The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Perl, как правильно сделать '@EXPORT = имена из массива;'?, !*! Asc, 28-Май-14, 15:47  [смотреть все]
Есть хеши: %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 - Супер вопрос: а как в модуле собрать в массив все имена хешей из этого модуля?

У меня есть некая задумка: есть модуль с хешами переводов ифейса на разные языки. И я хеши не только экспортирую, но и ещё, перед экспортом, делаю с каждым хешем несколько однотипных действий. Отсюда и вопросы.

  • Perl, как правильно сделать '@EXPORT = имена из массива;'?, !*! XAnder, 17:45 , 28-Май-14 (1)
    Чую ошибки проектирования.


    > our @EXPORT = qw(%en_US, %ru_RU, %pt_PT);

    А если их будет штук двести, тоже все экспортировать? Не проще ли обойтись хешем, где ключи - коды языков, а значения - ссылки на ваши хеши? Тогда и остальные вопросы отпадут сами собой.

    • Perl, как правильно сделать '@EXPORT = имена из массива;'?, !*! Asc, 14:19 , 03-Июн-14 (2)
      > А если их будет штук двести, тоже все экспортировать?

      А всё равно остаётся два места, где язык добавляется, удаляется. Т.е. хеш с именами=>ссылками-контентом и сами хеши с контентом . Всё равно два раза по "двести".


      > Не проще ли обойтись хешем, где ключи - коды языков, а значения - ссылки
      > на ваши хеши? Тогда и остальные вопросы отпадут сами собой.

      Но, спасибо, хеш хешей более правильно, т.к. код из головного поста потребует фокусов с use strict.

      P.S. Как в анекдоте, со временем я заметил, что "our @EXPORT = ..." - это массив, куда можно делать push() в разных местах. В т.ч. делая обход ключей (id языков) в, позднее предложенном, хеше хешей.





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру