Переменные Perl
Переменные — это данные, хранящиеся в памяти. Создание переменной открывает пространство в памяти.
Интерпретатор определяет объём памяти на основе типа переменной, поэтому переменным можно присваивать разные типы данных: целые числа, числа с плавающей точкой, строки и т. д.
В предыдущей главе мы познакомились с тремя базовыми типами данных Perl: скалярами, массивами и хэшами.
- Скаляры начинаются с $, например, $a и $b — это два скаляра.Массивы начинаются с @, например, @a и @b — это два массива.Хэши начинаются с %, например, %a и %b — это два хэша.
Perl создаёт независимое пространство имён для каждого типа переменных, поэтому переменные разных типов могут использовать одно и то же имя, не опасаясь конфликтов. Например, $foo и @foo — это две разные переменные.
Создание переменных
Переменным не нужно явно объявлять тип. После присваивания переменной значения интерпретатор автоматически выделяет соответствующее типу пространство.
Значения переменным присваиваются с помощью знака равенства (=).
В программе можно использоватьuse strictоператор, чтобы потребовать явного объявления всех переменных.
Слева от знака равенства находится переменная, а справа — значение. Пример:
$age = 25; # 整型 $name = "example"; # 字符串 $salary = 1445.50; # 浮点数
В приведённом выше коде 25, "example" и 1445.50 присваиваются$age, $nameи$salaryпеременным.
Далее мы увидим использование массивов и хэшей.
Скалярные переменные
Скаляр — это единица данных. Данные могут быть целыми числами, числами с плавающей точкой, символами, строками, абзацами и т. д. Проще говоря, это может быть что угодно. Ниже приведён простой пример использования скаляров:
Пример
Вывод вышеприведённой программы:
Age = 25 Name = example Salary = 1445.5
Переменные-массивы
Массив — это переменная, используемая для хранения упорядоченного списка скалярных значений.
Массивы начинаются с @.
Для доступа к переменным-массивам можно использовать знак доллара ($) вместе с именем переменной и указать индекс для доступа. Пример:
Пример
Вывод вышеприведённой программы:
$ages[0] = 25 $ages[1] = 30 $ages[2] = 40 $names[0] = google $names[1] = example $names[2] = taobao
В программе мы использовали escape-символ (\) перед знаком $, чтобы вывести символ $.
Хеш-переменные
Хеш — это коллекция парключ/значение.
Хеши начинаются с %.
Чтобы получить доступ к значениям хеша, можно использовать формат$ + {key}для доступа:
Пример
Вывод вышеприведённой программы:
$data{'google'} = 45
$data{'example'} = 30
$data{'taobao'} = 40
Контекст переменных
Так называемый контекст: относится к расположению выражения.
Контекст определяется типом переменной в левой части знака равенства. Если левая часть — скаляр, это скалярный контекст; если левая часть — список, это списочный контекст.
Perl определяет тип переменной в соответствии с контекстом. Примеры
Пример
Вывод вышеприведённой программы:
名字为 : google example taobao 名字数为 : 3
В коде @names — это массив, он используется в двух разных контекстах. В первом он копируется в другой массив, поэтому выводятся все элементы массива. Во втором мы присваиваем массив скаляру, что возвращает количество элементов в массиве.
Ниже перечислены различные контексты:
| Нет. | Контекст и описание |
|---|---|
| 1 | Скаляр −
Присваивание скалярной переменной, вычисляемое в правой части в скалярном контексте. |
| 2 | Список −
Присваивание массиву или хешу, вычисляемое в правой части в списочном контексте. |
| 3 | Логический −
Логический контекст — это простое вычисление выражения, проверяющее, истинно оно или ложно. |
| 4 | Пустой − В этом контексте неважно, какое значение возвращается, и обычно возвращаемое значение не требуется. |
| 5 | Интерполяция −
Этот контекст встречается только внутри кавычек. |