Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Hash, Ламерский вопрос 
:(
    Опции темы
AlexanderI
Дата 7.4.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.7.2004

Репутация: 2
Всего: 3



Есть файл XML.
Распарсил его (через Data::Dumper), получилось вот что:

Код

$VAR1 = {
                'title' => 'Тра ляля',
                'item' => [
                      {
                        'category' => 'Официально',
                        'description' => '11111',
                        'title' => 'название 1',
                        'author' => 'Анастасия Маврина',
                      },
                      {
                        'category' => 'Обзор',
                        'description' => 'А2222222',
                        'title' => 'АНОНС',
                        'author' => 'Сергей Елистратов',
                      },
                               ]
               }


Каким образом узнать сколько всего значений в элементе 'item' чтобы я потом к ним смог обращаться через $VAR1->{item}->[0]->{category}; или $VAR1->{item}->[2]->{category};

--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
shamber
Дата 7.4.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



AlexanderI, а не проще ли использовать модули для обработки xml?

. smile

Это сообщение отредактировал(а) shamber - 7.4.2008, 13:49
PM MAIL Jabber   Вверх
AlexanderI
Дата 7.4.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.7.2004

Репутация: 2
Всего: 3



А какой например ?
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
shamber
Дата 7.4.2008, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



а так можно попробовать

Код

foreach my $key (@{$var1->{item}}){
$count++;
}


$count в конце цикла скажет сколько этих элементов

Добавлено @ 13:51

можно попробовать использовать 
XML::Parser

Это сообщение отредактировал(а) shamber - 7.4.2008, 13:54
PM MAIL Jabber   Вверх
amg
Дата 7.4.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(AlexanderI @  7.4.2008,  13:38 Найти цитируемый пост)
Каким образом узнать сколько всего значений в элементе 'item' чтобы я потом к ним смог обращаться

Элементе 'item' - это ссылка на массив @{$VAR1->{item}}. 
Его последний индекс $#{$VAR1->{item}}.
Перебор этого массива:
Код

foreach my $href ( @{$VAR1->{item}} ) {
  print "$href->{category}\n";
}


PM MAIL   Вверх
AlexanderI
Дата 7.4.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.7.2004

Репутация: 2
Всего: 3



Спасибо большое. Это мне и было нужно.
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
shamber
Дата 7.4.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



блин smile все время забываю про последний индекс smile
PM MAIL Jabber   Вверх
ginnie
Дата 7.4.2008, 16:20 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



shamber, а про него и не надо помнить. Помнить надо про то, что использование массива в скалярном контексте возвращает количество элементов массива.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
shamber
Дата 8.4.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



ginnie, постораюсь smile запомнить
PM MAIL Jabber   Вверх
nitr
Дата 8.4.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



shamber, это истина ;)


--------------------
PM   Вверх
korob2001
Дата 1.8.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Извиняюсь, наверное поздно, просто давно меня здесь не было. smile)))
Код

print scalar @{$VAR1->{item}};


Цитата

AlexanderI, а не проще ли использовать модули для обработки xml?

Эта структура построена модулем XML::Simple, если я не ошибаюсь.

Это сообщение отредактировал(а) korob2001 - 1.8.2008, 21:13


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.