23 Сентября 2020 15:30 
Заработай шерингом
Навигация
 +  - 
Скачать игры
Сейчас на сайте
22.09.2020
vafelka
1 день
offline
21.09.2020
kembl
1 день
offline
21.09.2020
Warhangel
1 день
offline
21.09.2020
zpppinfVal
1 день
offline
20.09.2020
N1kot1ne
2 дней
offline
Последние фото
Game of Blocks : WesterosCraft and Game of Thrones
Game of Blocks : Wes...
Альбом: Скриншоты

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



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

Последние видео
Видео The Heretic: the complete short film : The Heretic is a short film created by Unity’s Demo team. After debuting its first part at GDC 2019, the completed short is now available to watch in its entirety.

Игрофильмы:  The Heretic: the complete short film

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

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

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

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

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

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



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

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

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


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

Работа с массивами в 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
СтавропольВчера в 21:24:19
(на 1 месяц)
Онлайн аптека поможет правильно сбросить вес и предлагает бады для похудения
• Для дома - Здоровье Цена: 1 1
Москва14.09.2020
(на 6 месяцев)
Магазин абразивных материалов «Абразивмастер»
• Хозяйство - Оборудование Цена: 1 1
Москва17.06.2020
(на 24 месяца)
Самое лучшее для похудения помогают народные рецепты для похудения в аптеке
• Для дома - Здоровье Цена: 1 1
Москва20.02.2020
(на 24 месяца)
Аптека поможет похудеть эффективно и продает капсулы самая лучшая диета
• Для дома - Здоровье Цена: 1 1
Ярославль22.12.2019
(на 24 месяца)
Облако тегов тем форума
Видео с презентации русской версии ArcheAge, Квест на профессию Titan для Destroyer, Как дёшево купить хороший велосипед?, The Insane - Чокнутый - Достижение, Джамп-клоны, Теги для поисковиков, Интерпол возглавил операцию по борьбе с распространением программы скрытого майнинга Coinhive, Ноутбук для дизайнера, Продюсеры объявили о закрытии сериала "Доктор Хаус", Список скиллов аугментации, Как удалить значок из области уведомлений Windows 7, Пластическая операция, ROSA, Повязка Edge делает людей умнее, Игроки всего мира будут объединены на одном сервере
Главная Статьи Файлы Форум Ссылки Новости Фотогалерея Объявления Видео Файлобменник Гороскоп Торренты Радио Видеочат
Яндекс.Метрика
Powered by PHP-Fusion copyright © 2002 - 2020 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.