Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык JavaScript.doc
Скачиваний:
9
Добавлен:
18.07.2019
Размер:
140.8 Кб
Скачать

Массивы в Perl: скалярные, ассоциативные. Их инициализация и обращение к элементам массива.

  • Массив (скалярный) является упорядоченным списком скаляров.

  • Каждый элемент массива имеет порядковый номер (индекс), с помощью которого к нему можно получить доступ. Нумерация элементов начинается с нуля.

  • Перед именем переменной типа массив указывается знак @, а для доступа к определенному элементу массива необходимо ставить знак $, так как определенный элемент массива является скаляром.

  • Тип скалярной переменной не фиксирован и определяется динамически в зависимости от контекста

  • Скалярный массив:

    • Является упорядоченным списком скаляров.

    • Каждый элемент массива имеет порядковый индекс, с помощью которого к нему можно получить доступ.

    • Нумерация элементов начинается с нуля.

    • Перед именем переменной-массива необходимо ставить знак '@'

    • При доступе к определенному элементу массива ставится знак '$', так как он фактически является скаляром.

  • Хеш-таблица представляет собой ассоциативный массив, позволяющий ассоциировать строку (ключ) со скаляром (значение).

  • Строка называется ключом, а скаляр в хеш-таблице значением.

  • Перед именем переменной-списка необходимо ставить знак процента %, а для доступа к определенному элементу массива рекомендуется ставить знак $.

  • Хеш-таблица представляет собой массив, где в нечетных позициях находятся ключи, а на четных — значения.

Например, для того чтобы присвоить значение трем элементам массива %dict с индексами first, second и third, можно воспользоваться одним из двух способов, указанных ниже.

$dict {'first' } = "первый"; $dict {'second' } = "второй";

$dict {'third' } = "третий";

Поиск Perl.

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

Оператор поиска m// записывается следующим образом:

m/шаблон/

Если значение переменной $_ содержит подстроку, соответствующую указанному шаблону, оператор поиска возвращает значение true.

Рассмотрим следующий пример:

$_ = <INPUT>;

if (m/Scripts/)

{ print "В URL есть каталог Scripts \n"; }

else

{ print " В URL нет каталога Scripts \n"; }

Оператор замены Perl

 s/// записывается следующим образом:

s/шаблон поиска/выражение для замены/[набор модификаторов]

При выполнении оператора s/// производится поиск соответствия шаблону, и если поиск завершается успешно, найденная подстрока заменяется указанным выражением. Подобно оператору m//, оператор s/// использует переменную $_. Ниже приведен простейший пример применения оператора s///.

$_ = "CGI-сценарий написан на языке С";

s/C$/Perl/;

print;

В результате выполнения сценария на консоль будет выведена следующая строка:

CGI-сценарий написан на языке Perl

Модификаторы.

g - глобальный поиск. Если этот модификатор не указан, после обнаружения первого соответствия оператор s/// закончит свою работу. Поэтому при отсутствии модификатора g будет произведено не более одной замены.

i - указывает, что при поиске следует игнорировать регистр символов.

e - указывает, что последовательность символов для замены следует интерпретировать не как подстроку, а как выражение Perl.

Чтобы поиск или замена производились в строке, содержащейся в нужной переменной, надо использовать следующее выражение:

Переменная =~ оператор_поиска_или_замены

Так, например, для преобразования шестнадцатеричных чисел, содержащихся в переменной $string, в десятичное представление можно использовать инструкцию:

$string =~ s/([0-9A-Fa-f]+)(H|h)/hex($1)/ge;