» язык
perl
» Главная
страница
» Вернуться
к содержанию ( Perl )
Скалярные
значения
Все
данные в Perl это скаляры, массивы
скаляров и хеши скаляров. Скалярные
переменные могут содержать числа,
строки и ссылки. Преобразование
числа — строки происходит автоматически
по умолчанию. Скаляр может иметь
только одно единственное значение,
хотя это может быть ссылка на
массив скаляров. Так как Perl
сам преобразовывает числа в
строки и наоборот, то программисту
нет необходимости думать о том,
что возвращает функция.
В
Perl не существует типов “строка”
или “число” или “файл” или что-то
еще. Это контекстно зависимый
полиморфный язык для работы
с текстами.
Скаляр
имеет логическое значение “TRUE”
(истина), если это не нулевая
строка или число не равное 0.
В
Perl существует два типа нулевых
(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 — количество
использованных.
Следующий
урок
|