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

на главную - закладки

Жанры

Шрифт:

goto («M1», «M2», «M3»)[$i];

здесь $i используется как индекс массива указанного непосредственно в выражении.

goto подпрограмма – довольно редкий случай т.к. всегда проще и надежней вызвать подпрограмму «естественным» образом.

POD операторы. Документирование программ.

В Перл реализован очень удобный механизм для

написания документации в момент создания программы. Для этого применяются специальные POD операторы.

Если в теле программы интерпретатор встречает оператор начинающийся с символа '=' например:

= head Набор стандартных процедур

то пропускается все до слова '=cut'. Это удобно для включения длинных на несколько строк или страниц комментариев. Затем

с помощью специальной программы pod можно отделить текст документации от текста программы.

Переменные

В Перл существует три типа структур данных: скаляры, массивы скаляров и хеши (hashes) – ассоциативные массивы скаляров. Обычно элементы массивов индексируются целыми числами, первый элемент – нулевой. Отрицательное значение индекса обозначает номер позиции элемента с конца. Хеши индексируются строками символов.

Имена скалярных переменных всегда начинаются с символа '$' даже когда обозначают элемент массива.

Пример:

$var1 # Простой скаляр 'var1'

$var1[0] # Первый элемент массива 'var1'

$var1{'first'} # Элемент с индексом 'first'

В случае использования имени массива «целиком» или его «среза» перед именем массива ставится символ '@'.

Пример:

@var1 # Все элементы массива var1 ( $var1[0], $var1[1], ... $var1[n])

@var1[1,3,10] # Элементы $var1[1], $var1[3], $var1[10]

@var1{'first','last'} # то же что и ( $var1{'first'}, $var1{'last'} )

Хеш «целиком» начинается с символа '%'.

Пример:

%var, %key, %years

Имена подпрограмм начинаются символом '&' если из контекста не видно

что это подпрограмма.

Пример:

&sub1, &test_prog, test(12)

Имена таблиц символов всегда начинаются символом '*'.

Каждый тип переменных имеет свою область памяти поэтому $var1 и $var1[0] совершенно разные переменные, хотя $var1[0] часть массива @var1. Так же @var1 и %var1 – разные массивы переменных.

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

разделителей.

Большие и малые буквы различаются поэтому $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

Поделиться:
Популярные книги

Метатель. Книга 7

Тарасов Ник
7. Метатель
Фантастика:
боевая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
фантастика: прочее
5.00
рейтинг книги
Метатель. Книга 7

Вернуть Боярство 3

Мамаев Максим
3. Пепел
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Вернуть Боярство 3

Сумеречный Стрелок 3

Карелин Сергей Витальевич
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 3

Студиозус

Шмаков Алексей Семенович
3. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Студиозус

Неправильный лекарь. Том 1

Измайлов Сергей
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неправильный лекарь. Том 1

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2

Развод с генералом драконов

Солт Елена
Фантастика:
фэнтези
5.00
рейтинг книги
Развод с генералом драконов

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Возвышение Меркурия. Книга 15

Кронос Александр
15. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 15

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

Своя правда

Шебалин Дмитрий Васильевич
2. Чужие интересы
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Своя правда