CuTTer (icutter@mail.ru)

Perl для перцев

Xakep, номер #020, стр. 020-042-3


if ($a==$c) {print "2";}

if (not $a==$b) {print "3";}

На экране появится число 123. С данного момента ты должен хорошо оперировать числами.

Теперь нам надо обсудить и другую полезную команду: while. Это тоже цикл, но он немного отличается. Для ясности закодим скрипт

#!/usr/bin/perl

$a=5;

while ($a>=1){

print "a";

$a--;}

Программа должна выдать aaaaa, исходя из этого можно догадаться, что операторы, находящиеся в блоке while, выполнялись пять раз. То есть принцип команды while прост: выполнять блок операций, пока сравниваемые значения ($a и 1) дают "истина".

Массивы: Matrix has you

Все массивы - это переменные, которые состоят из списков. Список - упорядоченные скалярные данные. Каждый элемент массива - это одна скалярная переменная с независимым скалярным значением. Если тебе сложно представить, что такое массив, то прикинь мозгой, как выглядит математическая матрица. Представил? Если так, то будь уверен, что матрица не поимеет тебя! :)

Массивы должны начинаться с префикса @, а их имена могут совпадать с именем скалярных переменных. Теперь нам нужно научиться присваивать к массивам данные, работать с ними.

#!/usr/bin/perl

@a=("Kal","КиШ","SuXXX");

$a[3]="New"; # @a равен ("Kal","КиШ","SuXXX","New");

print $a[1];

Если запустить программу, то на экране появится КиШ. До этого массивы были рассмотрены, как единое целое, а здесь мы обратились к его отдельным участкам. При таком обращении символ @ заменяется на $, а нумерация элементов начинается с нуля. Когда мы написали строку $a[3]="New";, то мы добавили в массив четвертое значение, а командой print $a[1] мы вывели второй элемент.

Оператор foreach - это еще одна циклическая конструкция. Этому оператору присваивается какой-нибудь список, этот список значений по очереди присваивается скалярной переменной, выполняя блок кода. Вот как это выглядит:

@a=(5,4,3,2,1);

foreach $b (@a){

print $b;

}

Это программа выдаст на экран 54321. Нужно понять, что список, который передается оператору foreach, может быть произвольным списком, а не только переменной-массивом.

Хеши: программерский харч

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

Имена хеш-переменных состоят из знака процента (%) и буквы, за которой следуют буквы, цифры и знаки подчеркивания. Каждый элемент хеша - это отдельное скалярное значение, доступное через индекс, представляющий собой строковое значение, называемое ключом. Вот как надо обращаться к отдельным элементам хеша %some: $some{ключ}, где ключ - любое скалярное выражение. Как и с массивами, новые элементы хеша создаются путем присваивания нового значения:

$some{"new"}="abc"; # создается ключ "new" со значением "bbb"

$some{"abc"}="qwerty"; # создается ключ "abc" со значением "qwerty"

print $some{"abc"}; # выводит на экран qwerty

В Perl'е существует функция keys (%имя_хеша), которая возвращает список всех текущих ключей данного хеша. Давай разберемся с этой функцией на следующем примере:

Назад на стр. 020-042-2  Содержание  Вперед на стр. 020-042-4