![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
не получается удалить или проверить не пуской ли массив-хэшей, то есть при проверке не пустой ли массив оно не адекватно как-то работает... if ($loop_data) { или так if ($#{$loop_data}) {
где может быть ошибка как удалить элемент массива и хэши в нем? пример:
|
|||
|
||||
| pompei |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
а следующий код
вообще какаято лажа. Вы когда делаете splice @{$loop_data}, $loopindex; то $#{$loop_data} уменьшается на 1, $loopindex увеличивается на 1, т.е. в оконцове все четные элементы в массиве останутся а нечётные распечатуются и удалятся. if ($loop_data) { } - всегда будет истина, даже если тот массив, на который ссылается переменная, будет пустой. правильно будет так if (scalar(@{$loop_data}) == 0) {...} #т.е. "если количество элементов в массиве равно нулю" здесь оператор scalar необязателен, но для спокойствия пусть стоит ПРИМЕЧАНИЕ: если массив используется в скалярном контексте, то возвращается количество элементов в мессиве если вам просто надо очистить массив то следайте так $loop_data = []; а если на этот массив ещё кто-то ссылается и ихние ссылки тоже должны быть очищены, то вот так @{$loop_data} = (); Незабывайте что есть ещё такие функции shift @{$loop_data} - удалить из массива первый элемент и вернуть его pop @{$loop_data} - удалить из массива последний элемент и вернуть его Это сообщение отредактировал(а) pompei - 19.3.2009, 05:45 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
как тогда правильно удалить конкретный элемент массива при переборе в завсисмости от условия? и проверить не пустой ли массив? (у меня массив с одним значением у котрого хеши, я удалил эти хэши, но а массив стал не пустой)
UPD: я поменял это @{$loop_data}, на это @loop_data без ссылки написал - вроде бы работает! если есть вариант более оптимальный, то скажите.. Это сообщение отредактировал(а) gcc - 19.3.2009, 08:47 |
|||
|
||||
| pompei |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
Это сообщение отредактировал(а) pompei - 19.3.2009, 13:45 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
||||
|
||||
| klem4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 27.7.2008 Репутация: 2 Всего: 2 |
|
|||
|
||||
| pompei |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
Ну а если на этот массив ещё кто-то ссылается, то в таком случае у того останется старый массив Кстати есть ещё вот такой синтаксис:
Это сообщение отредактировал(а) pompei - 20.3.2009, 05:09 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
||||||
|
|||||||
| klem4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 27.7.2008 Репутация: 2 Всего: 2 |
Потестировал немного, на массивах до 10000 при большом кол-ве удалений цикл быстрее грепа, а при больших чем 10000 масивах греп рвет.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |