24 Апреля 2024 01:16 
Заработай шерингом
Навигация
 +  - 
Скачать игры
Сейчас на сайте
22.04.2024
Apollo
1 день
offline
19.04.2024
Samurai97
4 дней
offline
19.04.2024
Aloha123
4 дней
offline
15.04.2024
fukkinside
1 неделя
offline
14.04.2024
V1ad
1 неделя
offline
Последние фото
Game of Blocks : WesterosCraft and Game of Thrones
Game of Blocks : Wes...
Альбом: Скриншоты

Вынос трёх пати куполом
Вынос трёх пати куполом
Альбом: Скриншоты



Альбом: Флора

Последние видео
Видео THE WORLD LIVE -  since 2008 | earthTV : So thank you for the many views of this stream, please enjoy the original classic television version of THE WORLD LIVE, first uploaded here for you in 2008 with just 7 locations.

Онлайн камеры:  THE WORLD LIVE - since 2008 | earthTV

Видео The Best Of Norway's Railway Cab Views : I\

Онлайн камеры:  The Best Of Norway's Railway Cab Views

Видео 130 LIVE World Cameras : 130 LIVE World Cameras, Relaxing Music, Map, Daily Timelapse - Your Armchair Travel

Онлайн камеры:  130 LIVE World Cameras

Наша кнопочка
FAQ7.ru
Код:
RSS каналы
Новости
Комменты
Форум
Статьи
Фото
Файлы
Ссылки
Объявления
Реклама
RU CLICKSРусский трафик
Автор темы: Warhangel
ID темы: 760
Информация о теме:
Имеются 1 сообщений по данной теме, которая была просмотрена 4492 раз.
Реклама
Обменник Обменник
Просмотр темы
Логин:
Пароль:  
Форум » Тематические » Программирование » PERL
Просмотр темы
Текущий рейтинг: (Всего: 0 голосов)  
Ответить
Иконка 
Работа с массивами в Perl
Наверх Распечатать сообщение #1
Опубликовано 09-05-2011 05:06
Аватар пользователя

Супер Администратор



Сообщений: 2689
Вас поблагодарили: 23
раз(а) в 23 сообщениях

Зарегистрирован: 24.03.10
Со дня регистрации: 5145
Откуда: Россия

Скрыть награды


Пожаловаться на это сообщение 

Работа с массивами в Perl
Преобразуем обычный массив в хэш-массив:


%hash = map { $_, 1 } @array;


Например:


%hash = map { $_, 1 } qw(a b c);


Этот оператор преобразует массив ('a', 'b', 'c') в хэш-массив ('a', 1', 'b', 1, 'c', 1). Русть мы имеем лог httpd примерно следующего содержания


host.com.de - - [08/Jan/2007:01:50:42 -0700] "GET /index.html HTTP/1.0" 200 6798
host.org.ch - - [08/Jan/2007:01:53:21 -0700] "GET /index.php HTTP/1.0" 200 10002


и нам нужно сделать хэш-массив, состоящий из первых слов каждой строки (в данном случае - имя домена), а значением элемента массива - количество повторений этого слова


@host{/^(\S+)/}++ while <>;


Этот же фрагмент кода можно переписать и в более привычном виде


  while (<>) {      # Считываем строку в переменную $_
  my ($addr) = /^(\S+)/;  # Получаем первое слово строки
  $host{$addr}++;         # Увеличиваем счетчик повторений слова
  }


Вот еще подобный фрагмент кода


%host = map {/^(\S+)/, 1} <>;


Но в этом случае содержимое всего файла считывается в память (<> в контексте списка) перед тем, как продолжить вычисления. Это может быть оправдано в случае небольших размеров файла. Инверсия хэш-массива один-к-одному
Предположим, мы имеем хэш-массив, с информацией о соответствии IP адресов и символьных имен


        %num_to_host = (
                '123.234.3.1' => 'george',
                '123.234.3.2' => 'Alex',
                '123.234.3.3' => 'judy'
        );


Таким образом, используя адрес IP в качестве индекса можно получить его символьное имя, то есть значение. А как выполнить обратную процедуру?


%host_to_num = reverse %num_to_host;


В случае хэш-массива с отношением один-к-одному мы получим хэш-массив с обратным соответствием, т.е. сможем определять IP адрес имея его символьное имя.


   ('george' => '123.123.3.1',
        'Alex' => '123.234.3.3',
        'jane' => '123.234.3.2')
 Offline
 
Посетить сайт автора
Цитировать
Ответить
Здесь присутствуют: 1 (пользователей: 0, гостей: 1)

« Предыдущая тема | Следующая тема »
 RSS Перейти на форум:
Розыгрыши 728х90

Последние объявления
ФотоЗаголовокГородРазмещено
АО «Карельский окатыш», АО «Олкон» и ООО «Яковлевский ГОК» продают неликвиды
• Хозяйство - Сырье и материалы Цена: 1 1
Другой18.04.2024
(на 1 месяц)
АО «Обуховский завод» реализует неликвиды
• Хозяйство - Сырье и материалы Цена: 1 1
Санкт-Петербург29.03.2024
(на 1 месяц)
Облако тегов тем форума
Адреналин: Gludio Farm Euro-PvP, Маленькие хитрости при приготовлении рыбы., Питьевая вода, Mythos Europe закрывается, Смартфон Phab 2 Pro с дополненной реальностью, Квест на Phantom Ranger, SSD накопители, Запущено альфа-тестирование русского Aion 2.6, XCOM: Enemy Unknown - Анонсирован выпуск Android-версии, Как узнать свою стихию?, Call of Duty 4: Modern Warfare, Важнейшие события 13-го года Биткоина, Обновление Tauti появится на серверах NCWest уже 13 июня, Банк Франции протестировал цифровую валюту для межбанковских расчетов, Абсолютная защита для всех
Главная Статьи Файлы Форум Ссылки Новости Фотогалерея Объявления Видео Файлобменник Гороскоп Торренты Радио Видеочат
Powered by PHP-Fusion copyright © 2002 - 2024 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.