![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
alyam |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
Помогите разобраться. Упрощенно эта задачка выглядит так:
данные в файле находятся в таком виде: <канцтовары> ручка гелевая <инв. номер> <комплектующие> HDD 200Mb <инв. номер> <канцтовары> карандаш HB <инв. номер> можно использовать шаблон s/^\<(.*?)\>\s+(.*?) \</ необходимо вывести на экран: склад№1 - ручка гелевая склад№1 - карандаш склад№2 - HDD 200Mb канцтовары на складе№1, комплектующие на складе№2 какую структуры данных использовать? хеш ? |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Что такое "склад" и откуда берется его номер?
|
|||
|
||||
alyam |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
всего 2 скалада. на одном хранятся канцтовары, на втором комплектующие.
как уже говорил я упростил задачу. на самом деле встречаются не только канцтовары и комплектующие....например есть <бумага> указывается ее тип и т.д. <инв. номер> получается $1 - элемент набора данных (массива) склад№ - это зависимость от содержимого в $1 и $2 каким то образом надо связать, чтобы вывести. сложновато для меня ![]() условимся, что с $1 можно связать только одно значение $2... Это сообщение отредактировал(а) alyam - 9.1.2007, 12:53 |
|||
|
||||
shootnix |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 3.9.2005 Где: Казахстан Репутация: 2 Всего: 2 |
Да можно не просто хеш, а хеш хешей или хеш хешей массивов.
Можно так. Можно воспользоваться модулем стандартным Class::Struct чтобы было удобнее и сподручнее создавать структуры, соответственно, perldoc в помощь. Можно всяк, в общем :-) |
|||
|
||||
alyam |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
нельзя так написать print $main_hash->{склад№1}->{ручка гелевая};
откуда я знаю что надо вывести именно гелевую ручку? print должен вывести все элементы хеша или хеша хешей перебирая их... |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Ну, я бы сделал массив хэшей хэшей. Индекс массива - номер склада, ключ первого хэша - категория товара (канцтовары, комплектующие), ключи второго хэша - сами товары, значения - инв. номера. Такая структура несколько избыточна, если на каждом складе только одна категория товаров, зато последнее условие становится необязательным.
|
|||
|
||||
alyam |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
инв номера вообще нипричем. не вижу как массив хешей хешей решает задачу.
Это сообщение отредактировал(а) alyam - 9.1.2007, 13:03 |
|||
|
||||
shootnix |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 3.9.2005 Где: Казахстан Репутация: 2 Всего: 2 |
Согласен, массив делать удобнее, работать с ним приятнее :-)
Кто, собственно, мешает перебирать хеш хешей или массив хешей?
Да вариантов масса. Непонятно только, что конкретно нужно сделать с данными, цель какая? Как выводить, что выводить? Может, лучше воспользоваться БД? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |