| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > массив хешей |
| Автор: grebnev 30.6.2006, 15:26 |
| Пожалуйста, покажите как динамически (в цикле) создать массив хешей. Т.е. как я понял массив ссылок на хеши. |
| Автор: Grig 30.6.2006, 16:56 | ||
Наверное так:
|
| Автор: grebnev 30.6.2006, 17:45 |
| ну а как же ссылки я тут читаю, говорят нельзя создавать хеши хешей нужно использовать что-то вроде массива указателей в общем поэтому и возник вопрос |
| Автор: grebnev 30.6.2006, 22:21 |
| Ну в общем суть дела в следующем: работаю с БД (использую DBI) методом $res1->fetchrow_hashref получаю из БД строку хочу сначала данные сохранить в хеш а после вывести в виде Строка(ИмяПоля->Значение, ИмяПоля->Значение, ИмяПоля->Значение) Строка(ИмяПоля->Значение, ИмяПоля->Значение, ИмяПоля->Значение) Строка(ИмяПоля->Значение, ИмяПоля->Значение, ИмяПоля->Значение) Уже использовал и хеш массивов и массив хешей и даже на определенном этапе получил результат но код изменил и теперь опять ни хр-на не работает |
| Автор: grebnev 1.7.2006, 00:01 |
| ну че ни кто ни чего не расскажет вернее покажет заранее сенкс |
| Автор: rcdimon 1.7.2006, 09:44 | ||
Теперь у тебя есть массив хешей @row Точнее массив ссылок на хеши.. |
| Автор: vumnik 1.7.2006, 16:05 | ||
А у меня вот такой примерчик. Простовато, зато всё понятно.
|
| Автор: alyam 2.8.2006, 13:35 |
| помогите написать программку. зачет горит ) файл : user1 group1 sdvsdhgfsgf user3 group7 sdjkhksdjgfskgf user2 group3 sdjhsdjks user3 group1 нужно отсортировать в убывающем порядке и вывести в файл user - и все группы group, в которых user встречается: user3 group1,group7 user2 group3 user1 group1 |
| Автор: Nab 2.8.2006, 14:23 | ||||
Добавлено @ 14:26 ага, можно еще вот так:
тогда и группы будут отсортированы по взрастанию... |
| Автор: Danissimo 14.8.2006, 16:42 | ||||
а вот такое подойдет:
а вот про зачет:
|
| Автор: Nab 15.8.2006, 23:00 | ||||||||||
| Danissimo, извини но не надо так писать... Если учиться то сразу правильно.... Я перепишу твой код повнятней... И постараюсь описать почему...
Ну или вот эта интересная конструкция :
дает тот же результат... А теперь вот этот код:
А вот этот код:
меняем на:
Возможно использование ссылок для начинающего и непонятно, хотя вроде старался разжевать, но на тему топика тоже стоит глянуть. Здесь правда наоборот, хеш ссылок на массивы |
| Автор: Danissimo 16.8.2006, 13:38 | ||||||||||||||||||||||||
Почему? Я так расуждаю, если значение переменной я могу поменять, и компилятор мне ничего про это не скажет, то с константой так не пройдет. Это верно? Если да, то почему не надо использовать constant. Я не согласен, что "редко используется" -- это аргумент.
Зачот!
Двойной ЗАЧОТ!
Хе, получается, такая штука. Предположим, что элемента $users{$name} еще не существует. И получается, что @{$users}{$name} преобразует несуществующий элемент к массиву. Тихо шифером шурша, крыша едет неспеша...
Почему "нужно"?
"сортировка и так идет строковая" -- это к чему? "кстати в задании речь шла об обратном порядке" -- а у меня как? "# [...] или лекцию про join прогулял?" -- пожалуй, что так тоже можно сказать =)
Это я не понял к чему. Вобщем, я в шоке от такого афигительного качества ответа. Пиши еще =) |
| Автор: Nab 16.8.2006, 14:09 | ||||||||||||||||||||||||||||||||
Давай пока сделаем так, покажи мне в условии задачи, где речь шла о константе? По условию скорее всего там будет именно переменная а не константа. А подключение лишних модулей влияет на производительность.
Я тебе сочуствую по этому поводу... Perl очень дружественнен в этом смысле, а твоя конструкция "@{$users}{$name}" вообще безсмысленна. Я сделал опечатку (исправил кстати), но я даже не подозревал, что ты до такого додумаешься А уж если хочется сделать проверку то вот такая конструкция самое то ...
Потому что так проще код читать... он меньше места занимает и компилируется быстрее
К тому что "{$b cmp $a}" нафиг не нужно
К тому что используешь нееффективный способ сортировки, есть простая функция reverse
Что именно здесь не понятно?
Большая просьба использовать нормальный русский язык... а с таким общением на udaff.com... |
| Автор: Danissimo 16.8.2006, 15:11 |
| В условии про константу речи не было. Однако, ты ж рекомендуешь их вообще не использовать. Вот я и спрашиваю, почему же? Говоришь, на производительность влияет. Ок, возможно. Чем докажешь? Наплевать на опечатку. И книжки читаю. Ты как считаешь, если б не было вопросов, спрашивал бы? Ты можешь сказать, где в документации описано, как перл "пошагово выполняет" такую конструкцию: push(@{$users{$name}}, 'x'); Хочется не проверку сделать, а понять, как перл "думает". Документация пока света не пролила. Может ты сможешь показать место в доке, из которого ясно следует, как перл в этой ситуации думает? "Потому что так проще код читать... он меньше места занимает и компилируется быстрее" -- и это все? "К тому что используешь нееффективный способ сортировки, есть простая функция reverse" -- аа, то есть сортируется все-таки правильно. А за reverse спасибо. Да, чет я не вижу среди моих вопросов вопроса о том, где и какой язык мне использовать. Пиши еще =) |
| Автор: Nab 16.8.2006, 15:31 | ||||||||
Доказывать ничего не собираюсь, это очевидно... Или что такое use, не знаешь?
perldoc perlreftut perldoc perldsc perldoc perllol Проверка разных конструкций как раз и позволит понять как раскрываются скобки и происходит приведение типов... Я не вижу смысла пересказывать своими словами документацию...
А этого мало? Ты же не спрашивал, а давал ответ....
В таком случае не вижу смысла в нашем общении вообще... Как правило безграмотный человек такой же код пишет, с одной стороны, а с другой, мне просто не приятно это читать |
| Автор: Danissimo 16.8.2006, 17:18 |
| Ладно, можешь не продолжать. Все равно, чувствую, ничего более ценного не скажешь. Спасибо и на том, что сказал =) |