Спецификация языка Perl
Приложение 2. Спецификация языка
Perl
Содержание
П2.1Основные
особенности Perl
П2.1.1Введение
П2.2Cтруктуры
данных
П2.2.1Скалярные
величины
П2.2.2Простые
массивы
П2.2.3Ассоциативные
массивы
П2.3Синтаксис
языка Perl
П2.3.1Основные
понятия
П2.3.2Простые
операторы
П2.3.3Составные
операторы
П2.3.4Операторы
языка Perl
П2.3.4.1Термы и
операторы списка
П2.3.4.2Оператор
``стрелка''
П2.3.4.3Операторы
++ и - -
П2.3.4.4Экспоненциальный
оператор
П2.3.4.5Символьные
унарные операторы
П2.3.4.6Операторы
связки
П2.3.4.7Бинарные
операторы
П2.3.4.8Операторы
сдвига
П2.3.4.9Операторы
сравнения
П2.3.4.10Операторы
эквивалентности
П2.3.4.11Побитовое
И, побитовое ИЛИ и Исключающее ИЛИ
П2.3.4.12Логическое
И и логическое ИЛИ
П2.3.4.13Оператор
диапазона
П2.3.4.14Условный
оператор
П2.3.4.15Операторы
присваивания
П2.3.4.16Оператор
``запятая''
П2.3.4.17Логическое
НЕ
П2.3.4.18Логическое
И, ИЛИ и Исключающее ИЛИ
П2.3.4.19Оператор
чтения из файла
П2.3.4.20Оператор
замены строки
П2.3.4.21Оператор
замены множества символов
П2.4Языковые
конструкции Perl
П2.4.1Ссылки
П2.4.1.1Основные
понятия
П2.4.1.2Символьные
ссылки
П2.4.2Регулярные
выражения
П2.4.3Зарезервированные
переменные
П2.4.4Встроенные
функции
П2.4.5Подпрограммы
и модули
П2.4.5.1Подпрограммы
П2.4.5.2Пакеты
П2.4.5.3Таблицы
символов
П2.4.5.4Конструкторы
и деструкторы пакетов
П2.4.5.5Классы
П2.4.5.6Модули
П2.5Объектная
ориентация
П2.5.1Объекты
П2.5.2Классы
П2.5.3Методы
П2.5.4Вызов
метода
П2.5.5Деструкторы
П2.1 Основные особенности Perl
Perl - интерпретируемый
язык, приспособленный для
обработки произвольных текстовых
файлов, извлечения из них
необходимой информациии и выдачи
сообщений. Perl также удобен для
написания различных системных
программ. Этот язык прост в
использовании, эффективен, но про
него трудно сказать, что он
элегантен и компактен. Perl сочитает
в себе лучшие черты C, shell, sed
и awk, поэтому для тех, кто
знаком с ними, изучение Perl-а не
представляет особого труда.
Cинтаксис выражений Perl-а близок к
синтаксису C. В отличие от
большинства утилит ОС UNIX Perl не
ставит ограничений на объем
обрабатываемых данных и если
хватает ресурсов, то весь файл
обрабатывается как одна строка.
Рекурсия может быть произвольной
глубины. Хотя Perl приспособлен для
сканирования текстовых файлов, он
может обрабатывать так же двоичные
данные и создавать .dbm файлы,
подобные ассоциативным массивам.
Perl позволяет использовать
регулярные выражения, создавать
объекты, вставлять в программу на С
или C++ куски кода на Perl-е, а
также позволяет осуществлять
доступ к базам данных, в том числе Oracle.
Ниже приводится в качестве примера
небольшая программа, которая
осуществляет доступ к Oracle.
#! /usr/local/bin/perl -w
# запуск с ключом печати ошибок.
use Oraperl;
# подключение модуля для работы с Oracle
$system_id = 'T:bdhost.somwere.com:Base';
# описание имени базы данных
$lda = &ora_login($system_id, 'scott','tiger');
# подключение к базе данных пользователя
# scott с паролем tiger
$statement = 'create table MYTABLE
(NAME char(10), TITLE char(20),
ORGANIZATION varchar2(256))';
# SQL команда создания таблицы MYTABLE
$csr = &ora_open($lda, $statement)
|| die $ora_errstr;
# открытие курсора csr, если это невозможно,
# то осуществляется выход и печать сообщения об ошибке.
&ora_close($csr); # закрытие курсора
open(FL, '/home/my_home_directory/my_file')
|| die "Can't open file n";
# открытие файла, если это невозможно,
# то выход с печатью сообщения об ошибке
while ($string = <FL>) {
# чтение входного потока из файла с дескриптором FL
@array = split(///,$string);
# считанная строка разбивается в массив
# строк, разделителем служит слеш
$st = 'insert into MYTABLE values(:1,:2,:3)';
# SQL команда помещения в таблицу некоторых значений
$csr = &ora_open($lda,$st) || $ora_errstr;
# открытие курсора или печать
# сообщения об ошибке и выход
&ora_bind($csr,$array[0],$array[1],$array[2]);
# привязка значений переменных к величинам, которые
# требуется поместить в таблицу
&ora_close($csr); # закрытие курсора
}
close FL; # закрытие файла
&ora_commit($lda);
# завершение транзакции в базе данных
&ora_logoff($lda);
# отключение от базы данных
П2.2 Cтруктуры данных
Perl поддерживает три типа данных:
- скаляры
- массивы скаляров
- ассоциативные массивы
скаляров (так называемые хэши).
Обычные массивы, как и в языке C,
индексируются числами, начиная с
нуля. Ассоциативные массивы
индексируются строками. Простые
скаляры (в дальнейшем мы будем
также называть их переменными)
всегда начинаются со знака доллара:
$ , даже в том случае, когда мы
обращаемся к элементу массива.
?
$day простая переменная day
$day[28] 29 элемент массива day
$day{'Feb'} значение 'Feb' из хэша %day
$#day последний индекс массива @day
Простой массив начинается со
знака @ :
?
@day массив day - ($day[1],$day[2],...)
@day[3,4,5] то же, что и @day[3..5]
Ассоциативный массив (хэш)
начинается со знака процент % :
%day (key1, val1, key2, val2, ...)
Каждый тип данных имеет свое
именное пространство, поэтому вы
можете использовать одно и то же
имя одновременно для скалярной
переменной, массива или хэша (а
также для подпрограммы или метки)
без опасения, что произойдет
ошибка. Perl различает большие и
маленькие буквы: FOO , foo
и Foo будут рассматриваться
Perl-ом как разные переменные. Имена,
начинающиеся с буквы или знака
подчеркивания, могут в дальнейшем
содержать в себе цифры или знаки
подчеркивания. Имена, начинающиеся
с цифры, могут в дальнейшем
содержать только цифры. Имена,
начинающиеся не с буквы, цифры или
подчерка должны состоять только из
одного символа. Большинство таких
имен зарезервировано, например $$
является идентификатором текущего
процесса. Интерпретация команды
или величины часто зависит от
требований контекста. Существует
два основных контекста: скалярный и
списковый. Некоторые операции
возвращают список величин если в
контексте подразумевается список и
одну величину, если контекст
скалярный. Например, операция &ora_fetch
в скалярном контексте возвращает
количество выбранных строк:
$nfields = &ora_fetch($csr);
В списковом контексте она
возвращает массив выбранных строк:
@array = &ora_fetch($csr);
Левый аргумент определяет контекст
правого аргумента.
П2.2.1 Скалярные величины
Скалярные переменные могут
содержать различные простые типы
данных, такие как числа, строки или
ссылки. Они не могут содержать
сложные типы, но могут содержать
ссылку на массив или хэш. В
булевском контексте скаляр
принимает значение TRUE , если
он содержит не нулевое число или не
пустую строку. В Perl существует
несколько способов записи чисел:
?
12345
12345.67
.23E-10
0xffff шестнадцатеричная запись
0377 восьмеричная запись.
1_234_567_890 подчерк для удобства чтения.
Строки заключаются в одинарные
или двойные кавычки. Использование
кавычек в Perl такое же как в bourne
shell -е: строка в двойных кавычках
обрабатывается и вместо переменных
подставляются их значения, а также
обрабатываются
бакслэш-последовательности, строки
в одинарных кавычках
рассматривается просто как
последовательности символов.
Используются также:
?
t табуляция
n перевод строки
r возврат каретки
b пробел
e символ Escape
|