Переменные.
В Perl существует три типа структур данных: скаляры, массивы скаляров и
хеши (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 - разные
переменные. В Perl по умолчанию имена меток и указателей файлов пишут
большими буквами.
Контекст.
Большое значение для правильного употребления встроенных функций
имеет контекст использования результата этих функций, т.к. в противном
случае они возвращают совершенно "непонятный" результат.
В Perl имеется два главных контекста: скалярный и список (list).
Проще говоря, если в левой части выражения имеется ввиду одно единственное значение, то
это скалярный контекст. Если множество значений - список.
Пример:
$var1 = <>; # Прочитать одну строку файла
@var1 = <>; # Прочитать все строки файла в массив @var1
$var1 = (1,2,3); # $var = 3 - количество элементов
@var1 = (1,2,3); # Создание массива @var1 с элементами 1,2,3
Скалярные значения.
Все данные в Perl это скаляры, массивы скаляров и хеши скаляров.
Скалярные переменные могут содержать числа, строки и ссылки.
Преобразование числа - строки происходит автоматически по умолчанию.
Скаляр может иметь только одно единственное значение, хотя это
может быть ссылка на массив скаляров. Так как Perl сам преобразовывает
числа в строки и наоборот, то программисту нет необходимости думать
о том, что возвращает функция.
В Perl не существует типов "строка" или "число" или "файл" или что-то еще.
Это контекстно зависимый полиморфный язык для работы с текстами.
Скаляр имеет логическое значение "TRUE" (истина), если это не нулевая
строка или число не равное 0.
В Perl существует два типа нулевых (null) скаляров - определенные
(defined) и неопределенные (undefined). Неопределенное значение
возвращается, когда что-то не существует. Например, неизвестная
переменная, конец файла или ошибка. С помощью функции defined()
вы можете заранее обнаружить подобное состояние.
Количество элементов массива так же является скаляром и начинается
символами $# подобно интерпретатору csh. Фактически $#var1 - это
индекс последнего элемента массива. Нужно помнить, что первый
элемент имеет индекс 0, поэтому количество элементов определяется
как $#var1+1 . Присвоение значения $#var1 изменит длину
массива и разрушит "оставленные" значения.
Присвоение значения элементу массива с индексом больше чем $#var1 увеличит размер массива, а присвоение ему нулевого списка -обнулит.
|