19 Июля 2018 20:21 
Навигация
 +  - 
Скачать игры
Сейчас на сайте
19.07.2018
Warhangel
01:28:10
offline
19.07.2018
matatumba
01:38:04
offline
19.07.2018
Ivan-St...
11:12:08
offline
19.07.2018
djekiwa...
15:32:55
offline
16.07.2018
tuvorst
3 дней
offline
Последние фото
Game of Blocks : WesterosCraft and Game of Thrones
Game of Blocks : Wes...
Альбом: Скриншоты

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



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

Последние видео
Видео ТРИ СУДЬБЫ - Короткометражный фэнтези-боевик : Короткометражный CGI-фильм, посвященный игре The Elder Scrolls Online.

Игрофильмы:  ТРИ СУДЬБЫ - Короткометражный фэнтези-боевик

Видео Rhine Falls : Rhine Falls Live Camera streeeam

Онлайн камеры:  Rhine Falls

Видео Live Cam, Central Memorial Park, Calgary, Alberta : Central Memorial Park is a park located in central Calgary\

Онлайн камеры:  Live Cam, Central Memorial Park, Calgary, Alberta

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

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



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

Зарегистрирован: 24.03.10
Со дня регистрации: 3039
Откуда: Россия
Пол: Мужской

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


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

Работа с массивами в 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
Другой12.07.2018
(на 1 месяц)
Филиал «КЧХК» АО «ОХК «УРАЛХИМ» в Кирово-Чепецке реализует неликвиды
• Хозяйство - Оборудование Цена: 1 1
Киров24.06.2018
(на 1 месяц)
ПАО «Казаньоргсинтез» реализует неликвиды в ассортименте
• Хозяйство - Оборудование Цена: 1 1
Казань22.06.2018
(на 1 месяц)
ОАО ТКЗ «Красный котельщик» продает металлопрокат в ассортименте
• Хозяйство - Сырье и материалы Цена: 1 1
Ростов-на-Дону20.06.2018
(на 1 месяц)
Купим автоматическую систему газового пожаротушения
• Хозяйство - Оборудование Цена: 1 1
Красноярск24.04.2018
(на 6 месяцев)
Облако тегов тем форума
Атрибуты - Система Атрибутов, Гайд баланс Друид ПвЕ 4.3.0, Ежегодный международный фестиваль электронной музыки, 10 самых ожидаемых фильмов 2017 года, Воздушная гимнастка дает мастер-класс, И снова неделя двойного опыта на EU/NA серверах, Анонс Goddess of Destruction: Chapter 2 - Tauti, Группа Ласковый май, Работа над ArcheAge - Захват движений, Квест на Paladin, Evolution of Minecraft, Warsmith, Разработчики разъяснили взаимодействие проектов серии "World of ...", Примерочная и испытательная прямо в клиенте Л2, 3D-телевизоры от Toshiba, которым не нужны специальные очки
Главная Статьи Файлы Форум Ссылки Новости Фотогалерея Объявления Видео Файлобменник Гороскоп Поиск по торрентам Радио Видеочат
Яндекс.Метрика
Powered by PHP-Fusion copyright © 2002 - 2018 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.