на начало
На главную страницу
Форум   

Статья :: Переменные

Переменные.

В 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 увеличит размер массива, а присвоение ему нулевого списка -обнулит.

Переменные

страницы в данном разделе 
От простого к сложному Переменные
Отладка Perl программ Форматы
Встроенные функции Введение в Perl
Интернет - ссылки и литература Модули (packages)
Операторы и приоритеты Регулярные выражения (шаблоны)
Запуск интерпретатора Perl Подпрограммы
Синтаксис Встроенные переменные Perl


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста