Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > структура данных |
Автор: alyam 9.1.2007, 11:52 |
Помогите разобраться. Упрощенно эта задачка выглядит так: данные в файле находятся в таком виде: <канцтовары> ручка гелевая <инв. номер> <комплектующие> HDD 200Mb <инв. номер> <канцтовары> карандаш HB <инв. номер> можно использовать шаблон s/^\<(.*?)\>\s+(.*?) \</ необходимо вывести на экран: склад№1 - ручка гелевая склад№1 - карандаш склад№2 - HDD 200Mb канцтовары на складе№1, комплектующие на складе№2 какую структуры данных использовать? хеш ? |
Автор: amg 9.1.2007, 12:08 |
Что такое "склад" и откуда берется его номер? |
Автор: alyam 9.1.2007, 12:26 |
всего 2 скалада. на одном хранятся канцтовары, на втором комплектующие. как уже говорил я упростил задачу. на самом деле встречаются не только канцтовары и комплектующие....например есть <бумага> указывается ее тип и т.д. <инв. номер> получается $1 - элемент набора данных (массива) склад№ - это зависимость от содержимого в $1 и $2 каким то образом надо связать, чтобы вывести. сложновато для меня ![]() условимся, что с $1 можно связать только одно значение $2... |
Автор: shootnix 9.1.2007, 12:43 | ||
Да можно не просто хеш, а хеш хешей или хеш хешей массивов.
Можно так. Можно воспользоваться модулем стандартным Class::Struct чтобы было удобнее и сподручнее создавать структуры, соответственно, perldoc в помощь. Можно всяк, в общем :-) |
Автор: alyam 9.1.2007, 12:49 |
нельзя так написать print $main_hash->{склад№1}->{ручка гелевая}; откуда я знаю что надо вывести именно гелевую ручку? print должен вывести все элементы хеша или хеша хешей перебирая их... |
Автор: amg 9.1.2007, 12:53 |
Ну, я бы сделал массив хэшей хэшей. Индекс массива - номер склада, ключ первого хэша - категория товара (канцтовары, комплектующие), ключи второго хэша - сами товары, значения - инв. номера. Такая структура несколько избыточна, если на каждом складе только одна категория товаров, зато последнее условие становится необязательным. |
Автор: alyam 9.1.2007, 12:57 |
инв номера вообще нипричем. не вижу как массив хешей хешей решает задачу. |
Автор: shootnix 9.1.2007, 13:09 | ||
Согласен, массив делать удобнее, работать с ним приятнее :-) Кто, собственно, мешает перебирать хеш хешей или массив хешей?
Да вариантов масса. Непонятно только, что конкретно нужно сделать с данными, цель какая? Как выводить, что выводить? Может, лучше воспользоваться БД? |