Переменные 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переменным.

Далее мы увидим использование массивов и хэшей.


Скалярные переменные

Скаляр — это единица данных. Данные могут быть целыми числами, числами с плавающей точкой, символами, строками, абзацами и т. д. Проще говоря, это может быть что угодно. Ниже приведён простой пример использования скаляров:

Пример

#!/usr/bin/perl $age = 25; # Целое число $name = "example"; # Строка $salary = 1445.50; # Число с плавающей точкой print "Возраст = $age\n"; print "Имя = $name\n"; print "Зарплата = $salary\n";

Вывод вышеприведённой программы:

Age = 25
Name = example
Salary = 1445.5

Переменные-массивы

Массив — это переменная, используемая для хранения упорядоченного списка скалярных значений.

Массивы начинаются с @.

Для доступа к переменным-массивам можно использовать знак доллара ($) вместе с именем переменной и указать индекс для доступа. Пример:

Пример

#!/usr/bin/perl @ages = (25, 30, 40); @names = ("google", "example", "taobao"); print "\$ages[0] = $ages[0]\n"; print "\$ages[1] = $ages[1]\n"; print "\$ages[2] = $ages[2]\n"; print "\$names[0] = $names[0]\n"; print "\$names[1] = $names[1]\n"; print "\$names[2] = $names[2]\n";

Вывод вышеприведённой программы:

$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = google
$names[1] = example
$names[2] = taobao

В программе мы использовали escape-символ (\) перед знаком $, чтобы вывести символ $.


Хеш-переменные

Хеш — это коллекция парключ/значение.

Хеши начинаются с %.

Чтобы получить доступ к значениям хеша, можно использовать формат$ + {key}для доступа:

Пример

#!/usr/bin/perl %data = ('google', 45, 'example', 30, 'taobao', 40); print "\$data{'google'} = $data{'google'}\n"; print "\$data{'example'} = $data{'example'}\n"; print "\$data{'taobao'} = $data{'taobao'}\n";

Вывод вышеприведённой программы:

$data{'google'} = 45
$data{'example'} = 30
$data{'taobao'} = 40

Контекст переменных

Так называемый контекст: относится к расположению выражения.

Контекст определяется типом переменной в левой части знака равенства. Если левая часть — скаляр, это скалярный контекст; если левая часть — список, это списочный контекст.

Perl определяет тип переменной в соответствии с контекстом. Примеры

Пример

/usr/bin/perl @names = ('google', 'example', 'taobao'); @copy = @names; Копировать $size = @names; # Присваивает массив скаляру, возвращает количество элементов массива print "Имена:\n"; @copy "print$size\n";

Вывод вышеприведённой программы:

名字为 : google example taobao
名字数为 : 3

В коде @names — это массив, он используется в двух разных контекстах. В первом он копируется в другой массив, поэтому выводятся все элементы массива. Во втором мы присваиваем массив скаляру, что возвращает количество элементов в массиве.

Ниже перечислены различные контексты:

Нет. Контекст и описание
1 Скаляр −

Присваивание скалярной переменной, вычисляемое в правой части в скалярном контексте.

2 Список −

Присваивание массиву или хешу, вычисляемое в правой части в списочном контексте.

3 Логический −

Логический контекст — это простое вычисление выражения, проверяющее, истинно оно или ложно.

4 Пустой −

В этом контексте неважно, какое значение возвращается, и обычно возвращаемое значение не требуется.

5 Интерполяция −

Этот контекст встречается только внутри кавычек.

Другие расширения