В языке Perl существует только три типа данных:
Строки представляют собой просто последовательность символов. Эта последовательность может содержать и одиночный символ, и целое число, и число с плавающей точкой. Применение конкретной операции к строке определяется ее контекстом - значением и окружающей обстановкой.
Строковые константы бывают двух видов:
'\\cond = $cond\n'означает то же самое, что в ней написано.
"\\cond = $cond\n"означает следующее:
\cond = <значение переменной $cond><перевод строки>
Здесь '\n' означает перевод строки (переход на новую строку), а '\\' означает знак '\'. Сами знаки " ' " и " " " в строке передаются как \' " и " \" ".
В таблице 8.1 представлены
| Описание | Примеры | |
|---|---|---|
| \ | Служит для |
Фрагменту /\\\*/ соответствует фрагмент текста \* |
| . | Представляет собой любой одиночный символ, кроме |
Фрагменту /./ будет соответствовать любая непустая строка. Внимание! При установке флага s знаку . Соответствует любой символ. |
| [ | Представляет собой конструкцию […] для представления любого символа из числа заключенных в скобки, т.е. Он представляет собой |
Два символа, разделенные знаком "-", задают диапазон значений. |
| ] | ||
| [^] | Представляет "исключающий" |
Фрагмент [^0-9] означает все нецифровые символы. |
| ^ | Этот |
Фрагмент /^Perl/ означает слово Perl в начале строки. |
| $ | Этот |
Фрагмент /Perl$/ означает слово Perl в конце строки. |
| ^$ | - | Фрагмент /^$/ означает пустую строку (начало и конец, между которыми пусто). |
| | | Фрагменту /a|b|c/ соответствует фрагмент текста, содержащий любой из символов: a, b и c. | |
| ( | Эта пара метасимволов служит для группирования ряда элементов, входящих в состав образца, в один - атом | Фрагмент /( |
| ) | ||
| Жадные алгоритмы | Фрагменты: | |
| r* | Ноль или более повторений r. | |
| r+ | Одно или более повторений r. | /.*/ - любая строка |
| r? | Ноль или одно повторение r. | /.+/ - любая непустая строка. |
| r{n} | Ровно n повторений r. | /[0-9]{3}/ - любая последовательность из трех цифр. |
| r{n,} | n и более повторений r. | /\[+/ - последовательность, состоящая из любого числа символов [. |
| r{n,m} | Минимум n, максимум m повторений r. | |
| Ленивые алгоритмы | Фрагменты: | |
| r*? | Любой символ или атом, в т.ч. пустой | |
| r+? | Один символ или атом | |
| r?? | Любой символ или атом, в т.ч. пустой | |
| r{n,m}? | Минимум n повторений | |
| Последовательность | Описание | Примеры |
|---|---|---|
| \nnn | Представляет символ, восьмеричный код которого равен nnn | |
| \xnn | Представляет символ, шестнадцатеричный код которого равен nn | |
| \cn | Представляет |
Фрагменту \cD соответствует Ctrl+D |
| \$ | Символ $ | |
| \@ | Символ @ | |
| \% | Символ % | |
| \a | Звонок | |
| \e | Символ Esc (ASCII код 27) | |
| \f | Символ перевода страницы (ASCII код 12) | |
| \n | ||
| \r | Символ " |
|
| \t | Символ горизонтальный табуляции (ASCII код 9) | |
| \v | Символ вертикальной табуляции (ASCII код 11) | |
| \s | Представляет класс |
|
| \S | Представляет класс непробельных символов. | |
| \d | Класс цифровых символов (то же самое [0-9]) | |
| \D | Класс нецифровых символов (то же самое [^0-9]) | |
| \w | Класс буквенно-цифровых символов [a-zA-Z_0-9] | |
| \W | Класс небуквенно-цифровых символов. | |
| \A | Начало строки | |
| \Z | Конец строки | |
| \b | Границы слова (между классами \w и \W) | |
| \B | Обозначает не границы слов | |
| \l | Первый символ регулярного выражения преобразуется в нижний регистр. | |
| \u | Первый символ регулярного выражения преобразуется в верхний регистр. | |
| \L …\E | Означает, что все символы в регулярном выражении между \L и \E преобразуются в нижний регистр. | |
| \U … \E | Означает, что все символы в регулярном выражении между \U и \E преобразуются в верхний регистр. | |
| \Q … \E | Означает, что все |
Фрагмент /\Q^*?+\E/ аналогичен /\^\*\\+/ |
| \G | Обозначает точку, в которой закончился предыдущий поиск m//g. |
Переменная
$<идентификатор>
Например:
[Пример 01]
$i = '0'; $String = "Мой папа\n";
Существуют предопределенные Perl переменные
[Пример 02]
$i = 1; $j = 10; $a = $i + $j # Верно, результат $a=11.0 $b = $j.' '; # Верно, результат $b = '10.0 ' $c = $a + $b; # Ошибка! Складывается число и строка.
Массивы в языке Perl - специальные переменные, содержащие в себе несколько строковых значений. Переменные-массивы обозначаются следующим образом:
@<идентификатор>
Переменной-массиву может применяться операция индексирования. Ее синтаксис следующий:
$<строковая переменная>=$<переменная-массив>[$<индекс>]
где $<индекс> - строковая переменная, принимающая целое значение.
Максимальный
$<идентификатор массива>
или
$#<идентификатор массива>
Первое определение является более новым. Минимальное значение индекса - ноль.
Существуют предопределенные в Perl переменные
Массивы незаменимы в тех случаях, когда необходимо загрузить в память содержимое всего текстового файла.
Ассоциативные массивы на языке Perl представляют собой массив парных символьных данных, первая строка которого содержит
%<идентификатор массива>
Для присвоения значений ассоциативному массиву необходимо использовать конструкцию:
[Пример 03]
# В этом примере определяются два ассоциативных массива:
# %a и %b, причем они определены одними и теми же данными.
%a = { "key1", "value1", "key2", "value2" };
%b = { "key1" => "value1", "key2" => "value2" };
Доступ к значению хэш массива по его ключу осуществляется с помощью конструкции: $a, где a - идентификатор хэш массива, например:
$str = $a{ "key2" }
где %a определена в [примере 03], и переменной $str будет присвоено значение: "value2". Аналогично происходит добавление и изменение значения ассоциативного массива по ключу, например:
[Пример 04]
$a{ "key1" } = "значение1"; # Изменение значения ключа "key1"
$a{ "key3" } = "value3"; # Добавление нового элемента в массив
Для хэш массивов определены функции, работающие с этим типом данных. Подробнее о них см. [59].
Хэш массивы широко применяются в CGI-сценариях в Интернете.
В связи с тем, что на компьютере стала обрабатываться
Форматы для выдачи данных типов "дата" и "время" хранятся:
При этом настройка форматов в Windows и Linux гораздо более "гибкая", чем в MS-DOS. В MS-DOS можно лишь задать "страну", а все остальные параметры выполняются по-умолчанию для этой страны. В Windows и Linux можно также задать "нестандартные" разделители цифр даты или времени.
Вообще-то форматы отображения даты отличаются:
Чаще всего в прикладных программах используются следующие представления дат:
<год><месяц><день><час><минуты><секунды>
При этом возможны следующие формы пересчета:
О функциях для работы с датой и временем в различных языках см. в следующем подразделе 8.2.3.
Функции работы с датой и временем на языке Perl представлены в таблице 8.4.
Итак, мы познакомились с основными типами данных, которые могут понадобиться при написании программ, полезных "пишущему" человеку. Говорилось о "машинных" и "пользовательских" типах данных, о стандартных операциях с данными и об их приоритетах, о целочисленной арифметике, арифметике чисел с плавающей точкой и т.п. Вполне возможно, что Вы никогда не будете писать или отлаживать программы, использующие все возможности "машинных" типов данных или переопределять пользовательские типы данных. Но Вы должны иметь представление о данных, используемых в программировании, хотя бы для того, чтобы Вам "не вешали лапшу на уши" незадачливые программисты при написании технического задания, чтобы Вы могли грамотно выбрать язык, подходящих именно для Ваших задач. Эти знания бесценны на начальном этапе работы над проектом.
Ниже приводится сводка по языкам программирования и их применению.
| Термин | Английский термин | Разъяснение |
|---|---|---|
| скаляр 1. | scalar 1. | (в Perl) Последовательность из одного или нескольких символов, значение (тип) которых определяется контекстом. Обозначается как: $<идентификатор>. |
| одиночный символ | Single character | Символ в одной из кодировок, представленный одиночным целым числом без знака, расположенный в регистре или ячейке памяти. Этим он отличается от типов данных "строка", содержащих только один символ (поскольку любой |
| контекст | context | Внешнее окружение и значение переменной, определяющее "тип данных" и результат операций. Контекст есть во всех языках, но наиболее "сильно" он реализован в Perl. |
| массив скаляров | array of scalars | (в Perl) Специфический тип переменных, содержащий в себе несколько упорядоченных строковых значений. Обозначается как: @<идентификатор>. |
| ассоциативный массив (хэш массив) | hash array | (в Perl) Массив парных символьных данных: "ключа" и "значения ключа". Обозначается как: %<идентификатор>. Хэш массивы широко используются в Интернете. |
| апостроф | apostrophe | Знак препинания в английском языке, представляющий собой закрывающую одинарную кавычку, расположенную сверху. |
| метасимвол | metacharacter | В Си-подобных языках - символ специального назначения, образованный путем добавления к алфавитно-цифровому символу знак "обратная косая черта" (" |
| ключ | key | (в Perl) Первая из парных строк символов ассоциативного массива, по которому ищется элемент с нужным значением. В хэш массиве значение ключа должно быть уникальным. |
| значение (ключа) | value (of a key) | (в Perl) Вторая из парных строк символов ассоциативного массива, являющееся его символьным значением в общем понимании этого термина. В отличие от ключа, строка: "значение" может повторяться в ассоциативном массиве и даже может отсутствовать. |
| тип дата | date type | Тип для представления даты и времени в компьютерах. При этом сами даты хранятся как числа с плавающей точкой двойной точности, а при выводе дата и время преобразуется в |
| тип время | time type | См. |
| системные часы BIOS | BIOS reference clock | Микросхема в ЭВМ, генерирующая и запоминающая количество импульсов |
| Функция | Синтаксис | Описание |
|---|---|---|
chomp |
chomp СПИСОК
|
Удаляет из каждого |
chop |
chop СПИСОК
|
Удаляет из каждого |
|
|
Возвращает символ по заданному числовому коду |
crypt |
crypt ТЕКСТ, ШИФР |
Шифрует ТЕКСТ с использованием заданного параметра шифра. |
|
|
Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатеричное число и вычисляет его десятичный эквивалент. При использовании без параметров вызов аналогичен вызову |
index |
index СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию первого вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается с заданной позиции в строке (нумерация символов в строке начинается с "0"). |
lc |
lc ВЫРАЖЕНИЕ,
|
Функция преобразует все прописные буквы строкового параметра ВЫРАЖЕНИЕ в строчные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров функция аналогична вызову lc $_ . |
lcfirst |
lcfirst ВЫРАЖЕНИЕ
|
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в нижний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову lcfirst $_ . |
length |
length ВЫРАЖЕНИЕ
|
Возвращает количество байтов в строке, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров функция эквивалентна вызову length $_ . |
oct |
oct ВЫРАЖЕНИЕ
|
Интерпретирует строковое ВЫРАЖЕНИЕ как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов 0x, то его содержимое интерпретируется как шестнадцатеричное число. При использовании без параметров вызов функции аналогичен вызову oct $_ . |
ord |
ord ВЫРАЖЕНИЕ
|
Возвращает числовой ASCII код первого символа строки, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров вызов функции аналогичен вызову ord $_ . |
pack |
pack ШАБЛОН, СПИСОК |
Упаковывает массив или список значений в двоичную структуру в соответствии с заданным шаблоном, представляющим собой последовательность символов, которые задают порядок и тип значений. Возвращает строку, содержащую полученную структуру. |
|
|
В списковом контексте возвращает список значений, состоящий из элементов, заданным параметром СПИСОК списка, но в обратном порядке, начиная с последнего символа. В скалярном контексте соединяет все элементы списка в одну строку, состоящую из символов полученной строки, но в обратном порядке. |
rindex |
rindex СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию последнего вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается до заданной позиции в строке (включая символ в этой позиции). |
sprintf |
sprintf ФОРМАТ, СПИСОК |
Возвращает строку, представляющую собой форматный вывод |
|
|
Находит и возвращает из параметра СТРОКА, подстроку длиной, равной значению параметра ДЛИНА, начиная с символа, заданного параметром СМЕЩЕНИЕ. Если значение СМЕЩЕНИЕ отрицательно, то извлечение начинается с последнего символа строки. Если значение ДЛИНА отрицательно, то от конца строки отсекаются количество символов, равное абсолютному значению этого параметра. Если задан строковый параметр ЗАМЕЩЕНИЕ, то найденная подстрока замещается ею в параметре СТРОКА, который в этом случае должен быть l-Значением. |
uc |
uc ВЫРАЖЕНИЕ,
|
Функция преобразует все строчные буквы строкового параметра ВЫРАЖЕНИЕ в прописные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову uc $_ . |
ucfirst |
ucfirst ВЫРАЖЕНИЕ
|
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в верхний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову ucfirst $_ . |
|
|
Возвращает значение указателя позиции в строке после последней выполненной для нее операции поиска по образцу: m//g. Если используется в левой части операции присвоения, то изменяет значение указателя, влияя на \G в регулярном выражении. При использовании без параметров данный вызов эквивалентен вызову: |
quotemeta |
quotemeta ВЫРАЖЕНИЕ
|
Возвращает строку, в которой перед каждым неалфавитно-цифровым символом поставлена обратная черта. Значение параметра: ВЫРАЖЕНИЕ - интерпретируется как строка. (Внутренняя функция реализации |
split |
split /ОБРАЗЕЦ/[.ВЫРАЖЕНИЕ[.ПРЕДЕЛ]]
|
Разбивает строку, являющуюся значением параметра: ВЫРАЖЕНИЕ, на массив строк, с использованием разделителя, определяемым регулярным выражением в параметре: ОБРАЗЕЦ. В списковом контексте возвращает полученный массив, в скалярном контексте - количество найденных строк разбиения. Если задан параметр: ПРЕДЕЛ, разбивает на не более чем заданное этим параметром число строк. Если параметр: ВЫРАЖЕНИЕ - не задан, то используется внутренняя специальная переменная интерпретатора Perl $_, Если не задан образец, то разбивает по |
|
|
Оптимизирует строковые данные параметра: ВЫРАЖЕНИЕ - для дальнейшего использования в повторных операциях поиска по образцу. В цикле с несколькими операциями поиска может сэкономить время выполнения. При использовании без параметров функция эквивалентна: |
| Функция | Синтаксис | Описание |
|---|---|---|
delete |
delete ВЫРАЖЕНИЕ |
Удаляет из массива скаляров его элемент или фрагмент, заданный параметром: ВЫРАЖЕНИЕ. Если удаляется последний элемент массива, то автоматически изменяется длина массива, если удаляются элементы из его середины, то оставшиеся элементы не сдвигаются (для сдвига используйте функцию |
exists |
exists ВЫРАЖЕНИЕ |
Проверяет, был ли когда-либо инициализирован в массиве скаляров элемент, заданный параметром: ВЫРАЖЕНИЕБ, например, $array[3], даже если сейчас его значение не определено. Если да, то возвращает значение "истина", иначе - "ложь". Функция exist работает с массивами скаляров только в Perl версий 5.6.0 и выше. |
|
|
Удаляет из массива скаляров последний элемент и возвращает его значение. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен |
push |
push МАССИВ, СПИСОК |
Рассматривает массив скаляров, заданный параметром: МАССИВ, как стек и добавляет после его последнего элемента элементы списка, заданные параметром: СПИСОК. Возвращает количество элементов полученного массива. |
shift |
shift МАССИВ
|
Удаляет из массива скаляров первый элемент и возвращает его значение. После удаления элементы оставшиеся элементы сдвигаются влево: второй элемент становится первым, третий - вторым и т.д. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен shift @ARGV, а в подпрограмме shift @_. |
|
|
Удаляет из массива количество элементов, заданное значением параметра: КОЛИЧЕСТВО, начиная с элемента, заданное значением параметра: НОМЕР. В случае задания параметра СПИСОК заменяет указанные в нем элементы списка. В списковом контексте возвращает удаленные элементы; в скалярном контексте - последний удаленный элемент. Если параметр:КОЛИЧЕСТВО не задан, то удаляются все элементы после элемента с номером, определенным значением параметра: НОМЕР. |
unshift |
unshift МАССИВ, СПИСОК |
Добавляет элементы списка, определенного параметром: СПИСОК, в начало массива, заданного параметром МАССИВ. Выполняет действия, противоположные действиям функции shift. |
grep |
grep БЛОК СПИСОК
|
|
join |
join ВЫРАЖЕНИЕ, СПИСОК |
Рассматривает все элементы списка, определенного параметром: СПИСОК, как строковые значения, соединяет их в одну строку, вставляя между ними разделитель, равный значению параметра: ВЫРАЖЕНИЕ, и возвращает полученную строку. |
map |
map БЛОК СПИСОК
|
|
pack |
pack ВЫРАЖЕНИЕ, СПИСОК |
|
|
|
В списковом контексте возвращает список значений элементов, заданный параметром: СПИСОК, в обратном порядке, начиная с последнего элемента. В скалярном контексте соединяет все элементы в одну строку и возвращает строку, в которой символы расположены в обратном порядке, начиная с последнего символа. |
sort |
sort [ПОДПРОГРАММА] СПИСОК
|
Сортирует список значений, заданный в параметре: СПИСОК. Если параметры БЛОК и ПОДПРОГРАММА не заданы, то используется стандартная процедура сравнения строковых данных. Если они заданы, то операторы блока или подпрограммы используются в качестве процедуры сравнения при сортировке элементов списка. В этом случае в теле блока или подпрограммы в последнем операторе следует использовать операцию <=> или cmp в зависимости от сортировки соответственно числовых и строковых данных. Возвращает список, элементами которого являются отсортированные элементы исходного списка. |
unpack |
unpack ШАБЛОН, ВЫРАЖЕНИЕ |
| Функция | Синтаксис | Описание |
|---|---|---|
gmtime |
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime( time ); |
Преобразует значение даты и времени в 9-ти элементный массив, соответствующий временной зоне Гринвича. Все элементы - числа. Месяц $mon принимает целые значения от 0 до 11, дни недели ($wday) - от 0 до 6, причем 0 - воскресенье, год ($year) отсчитывается от 1900 года. В скалярном контексте выдает такую же структуру данных, как и функция ctime(3). |
localtime |
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime( time ); |
Полностью соответствует функции: gmtime, за исключением того, что значение относится к зоне местного времени. |
time |
time |
Возвращает число секунд, прошедшее с начала эпохи - 01 января 1970 года. |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.