The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Perl, как правильно сделать '@EXPORT = имена из массива;'?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Perl, как правильно сделать '@EXPORT = имена из массива;'?"  +/
Сообщение от Asc on 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 - Супер вопрос: а как в модуле собрать в массив все имена хешей из этого модуля?

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Perl, как правильно сделать '@EXPORT = имена из массива;'?"  +/
Сообщение от Asc on 03-Июн-14, 14:19 
> А если их будет штук двести, тоже все экспортировать?

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


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

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

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


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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