Чтение онлайн

ЖАНРЫ

Шрифт:

Имена переменных могут содержать любые буквенно-цифровы символы за исключением пробела и табуляции. Эти смволы используются в качестве разделителей.

Большие и малые буквы различаются поэтому $var1 и $Var1 – разные переменные. В Перл по умолчанию имена меток и указателей файлов пишут большими буквами.

Контекст.

Большое значение для правильного употребления встроенных функций имеет контекст использования результата этих функций т.к. в противном

случае они возвращают совершенно «непонятный» результат.

В Перл имеется два главных контекста: скалярный и список (list).

Проще говоря если в левой части выражения имеется ввиду одно единственное значение – то это скалярный контекст. Если множество значений – список.

Пример:

$var1 = <>; # Прочитать одну строку файла

@var1 = <>; # Прочитать все строки файла в массив @var1

$var1 = (1,2,3); # $var = 3 – количество элементов

@var1 = (1,2,3); # Создание массива @var1 с элементами 1,2,3

Скалярные значения.

Все данные в Перл это скаляры, массивы скаляров и хеши скаляров.

Скалярные переменные могут содержать числа, строки и ссылки.

Преобразование числа – строки происходит автоматически по умолчанию.

Скаляр может иметь только одно единственное значение, хотя это может быть ссылка на массив скаляров. Так – как Перл сам преобразовывает числа в строки и наоборот то программисту нет необходимости думать о том что возвращает функция.

В Перл не существует типов «строка» или «число» или «файл» или что то еще.

Это контекстно зависимый полиморфный язык для работы с текстами.

Скаляр имеет логическое значение "TRUE" (истина) если это не нулевая строка или число не равное 0.

В Перл существует два типа нулевых (null) скаляров – определенные (defined) и не определенные (undefined). Не определенное значение возвращается когда что-то не существует. Например не известная переменная, конец файла или ошибка. С помощью функции defined вы можете заранее обнаружить подобное состояние.

Количество элементов массива так же является скаляром и начинается символами $# подобно интерпретатору csh. Фактически $#var1 – это индекс последнего элемента массива. Нужно помнить что первый элемент имеет индкес 0 поэтому количество элементов определяется как $#var1+1 . Присвоение значения $#var1 – изменит длину массива и разрушит «оставленные» значения.

Присвоение значения элементу массива с индексом больше чем $#var1

– увеличит размер массива, а присвоение ему нулевого списка – обнулит.

В скалярном контексте имя массива возвращает его длину (для списка возвращается последний элемент).

Пример:

@var1 = (4, 3, 2, 1); # Присвоение значения

элементам массива

$i = @var1; # Использование скалярного контекста

print $i; # Печать результата 4 – кол-во элементов

print @var1; # Списковый контекст, печать всех элементов.

Для принудительного получения скалярного значения удобно применять функцию scalar.

Пример:

print scalar(@var1); # Вывод длины массива а не его значений

Хеш в скалярном контексте возвращает «true» если существует хотя бы одна пара «ключ-значение». Фактически возвращается строка типа 2/8 где 8 – количество выделенных «ячеек» памяти, а 2 – количество использованных.

Конструкторы скаляров.

Числа пишутся стандартно:

123

123.123

0.12

.12E-10

0xABCD # Шестнадцетиричная запись

0377 # Если 0 в начале – восьмеричная

123_456_123 # Так тоже можно для удобства чтения.

Строки ограничиваются одинарными (') или двойными (") кавычками:

'Ровняйсь, смирно!'

«Построемся и спасемся.»

Способов обозначения строк очень много. Плодробно смотрите описание оператора qq.

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

Пример:

$var1{first} то же что и $var1{'first'}

Обратите внимание на то что перед первой одинарной кавычкой должен стоять пробел иначе строка воспримется как имя переменной так-как в именах разрешено использование одинарных кавычек.

Запрещается в кавычках применять зарезервированные литералы __LINE__ (номер текущей строки программы), __FILE__ (текущий файл).

Для обозначения конца программы можно применять литерал __END__

Весь последующий текст игнорируется, но его можно прочитать использую указатель файла DATA.

Слова в программе не поддающиеся ни какой интепретации воспринимаются как строки в кавычках поэтому рекомендуется имена меток и указателей файлов писать большими буквами для избежания возможного «конфликта» с зарезервированными словами.

В Перл есть возможность вставлять текст документа прямо в программу.

Так называемый "here-doc" (здесь текст) метод. Обозначается символами << за которым идет слово-ограничитель.

Пример:

print <<EOF; # Все строки до EOF – текст для печати.

Эй вы трое, идите двое сюда!

Полковник Савонькин.

EOF

Конструкторы списков.

Список – множество значений перечисленных через запятую и заключенных в круглые скобки. В списковом контексте список возвращает последний элемент списка.

Пример:

@var1 = (1, 2, 'привет', 1.2); # Присвоить значение элементам.

Поделиться с друзьями: