Отправляет email-рассылки с помощью сервиса Sendsay

Perl - подпишись и учись!

  Все выпуски  

Perl - подпишись и учись!


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

 Hi, All!  
    Приветствую всех!
    В прошлом выпуске мы "покончили" с массивами. Этот выпуск посвящён хэшам. Что это такое?
    Хэши (хэш-таблицы, хэшированные таблицы), называемые также ассоциативными массивами для доступа к отдельным элементам данных, используют не индексы, в отличие от обычных массивов, а ключи. При использовании хэшей значения ассоцииируются с текстовыми ключами, например:
  $hash{one}=1;
  $hash{two}=2;
  $hash{three}=3;
Теперь можно использовать эти данные данные, применив для доступа к ним ключ:
print $hash{two};
Результат:
2
Хэши (хэш-таблицы, хэшированные таблицы) в более ранних версиях Perl назывались ассоциативными массивами, и это описывает их суть более содержательно, так как для доступа к данным вместо числового индекса используется ключ (то есть текстовая строка), которая ассоциируется со значением. Поскольку в хэшах ссылки на данные осуществляются с помощью ключей, а не чисел, доступ к элементам обычно интуитивнее и проще, чем в случае массивов. Однако организация циклов для хэшей может сказаться труднее, потому что к злементу хэша невозможно получить доступ с помощью числового итератора цикла. Имена хэшей начинаются с префикса %. Так создается пустая хэш-таблица:
  %hash =();
Как и в случае массивов, при работе с элементами хэшей надо использовать разыменовывающий префикс $. Вот, например, как поместить в хэш новые элементы:
  %hash =();
  $hash{fruit} = apple;
  $hash{sandwich} = hamburger;
  $hash{drink} = bubbly;
(Здесь fruit - первый ключ хэш-таблицы, и он соответствует значенню apple; sandwich является вторым ключом со значеннем hamburger и т. д.) Обратите вниманне, что для ключа используются фигурные ({}), а не квадратные ([]) скобки, как это было с индексами массивов.
На самом деле нет необходимостн создавать пустой хэш, чтобы начать его заполнение. Встретив обращение к несуществующему хэшу, Perl создаёт его автоматически. (Это - шаг навстречу программистам, попытка заставить систему работать так, как вы ожидаете.) Поэтому следующий код работает не хуже предыдущего:
  $hash{fruit} = apple;
  $hash{sandwich} = hamburger;
  $hash{drink} = bubbly;
  print $hash{sandwich};
Результат:
hamburger
He забывайте, что Perl при считывании новых злементов опускает "пробельные символы". Поэтому, например, массивы с множеством элементов можно сделать более прозрачными для понимания, использовав многострочные конструкции:
  @аrrау = ( "one", "two", "three");
Точно так же можно создавать хэш-таблицы, указывая пары ключ/значение:
  %hash = ( fruit    , apple, sandwich , hamburger);
  print "$hash{fruit}";
Результат:
apple
Вместо запятой, разделяющей пары, можно использовать синоним - конструкцию =>. С этим оператором отношенпе ключ/значение выглядит прозрачнее, так что программисты часто записывают команду создания хэша так:
  %hash = ( fruit    => apple, drink    => bubby);
  print "$hash{fruit}";
Результат:
apple
Оператор => не выполняет специальных операций - это в точности то же самое, что и обычная запятая, за исключеннем того факта, что он вынуждает интерпретнровать слово, стоящее слева, как строку. Например, команда
  print "x"=>"y"=>"z";
делает то же, что и команда:
  print "х", "у", "z";
Не запрещается использовать ключи, содержащие пробелы. Например, можно создать элемент хэша с ключом ice cream:
  $hash2{cake} = chocolade;
  $hash2{pie} = blueberry;
  $hash2{'ice cream'} = pecan;
и когда потребуется использовать его:
print "$hash2{'ice cream'}";
Результат:
pecan
При создании ключей можно использовать интерполирование текстовых строк, ограниченных двойными кавычками, а также просто переменные.
$value = $hash{$key};
Хэши обеспечивают мощное средство для хранения данных, но ссылаться на злементы хэш-таблицы напрямую, с помощью числового ивдекса, нельзя. Это, конечно же, не значит, что нельзя организовать цикл по злементам хэша, но об этом будет рассказано в следующей рассылке.
________________________________________
В составлении выпуска были использованы материалы книги Стивена Холзнера(Steven Holzner) "Perl. Core Language. Little Black Book", а также документация, прилагаемая к самому PERLу. ________________________________________
И ещё, если у вас есть вопросы, то задавайте их на форуме сайта. ________________________________________
                С уважением, Дмитрий.

Another Banner Network

http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное