Переменные — это зарезервированные области памяти для хранения значений. Это означает, что когда вы создаете переменную, вы резервируете некоторое пространство в памяти.
На основе типа данных переменной интерпретатор выделяет память и решает, что можно сохранить в зарезервированной памяти. Поэтому, назначая переменным разные типы данных, вы можете хранить целые, десятичные или строковые значения в этих переменных.
Мы узнали, что Perl имеет следующие три основных типа данных:
- Скаляры
- Массивы
- Хэш
Соответственно, мы собираемся использовать три типа переменных в Perl. Скалярной переменной будет предшествовать знак доллара ($), и он может хранить число, строку или ссылку. Переменной массива будет предшествовать знак @, и он будет хранить упорядоченные списки скаляров. Наконец, переменная Hash будет предшествовать знаку% и будет использоваться для хранения наборов пар ключ / значение.
Perl поддерживает каждый тип переменной в отдельном пространстве имен. Таким образом, вы можете, не опасаясь конфликта, использовать одно и то же имя для скалярной переменной, массива или хэша. Это означает, что $ foo и @foo — две разные переменные.
Создание переменных
Переменные Perl не должны быть явно объявлены для резервирования пространства памяти. Объявление происходит автоматически, когда вы присваиваете значение переменной. Знак равенства (=) используется для присвоения значений переменным.
Имейте в виду, что объявить переменную обязательно, прежде чем мы ее используем, если в нашей программе используется оператор строгой инструкции.
Операнд слева от оператора = — это имя переменной, а операнд справа от оператора = — это значение, хранящееся в переменной. Например —
$age = 25; # An integer assignment $name = "John Paul"; # A string $salary = 1445.50; # A floating point
Здесь 25, «John Paul» и 1445.50 — значения, присвоенные переменным $ age , $ name и $ salary, соответственно. Вскоре мы увидим, как мы можем присваивать значения массивам и хэшам.
Скалярные переменные
Скаляр — это единица данных. Этими данными могут быть целое число, число с плавающей точкой, символ, строка, абзац или вся веб-страница. Просто сказать, что это может быть что угодно, но только одна вещь.
Вот простой пример использования скалярных переменных —
#!/usr/bin/perl $age = 25; # An integer assignment $name = "John Paul"; # A string $salary = 1445.50; # A floating point print "Age = $age\n"; print "Name = $name\n"; print "Salary = $salary\n";
Это даст следующий результат —
Age = 25 Name = John Paul Salary = 1445.5
Переменные массива
Массив — это переменная, в которой хранится упорядоченный список скалярных значений. Переменным массива предшествует знак «at» (@). Для ссылки на один элемент массива вы будете использовать знак доллара ($) с именем переменной, за которым следует индекс элемента в квадратных скобках.
Вот простой пример использования переменных массива —
#!/usr/bin/perl @ages = (25, 30, 40); @names = ("John Paul", "Lisa", "Kumar"); 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";
Здесь мы использовали escape-знак (\) перед знаком $, чтобы распечатать его. Другой Perl поймет это как переменную и напечатает ее значение. При выполнении это даст следующий результат —
$ages[0] = 25 $ages[1] = 30 $ages[2] = 40 $names[0] = John Paul $names[1] = Lisa $names[2] = Kumar
Хеш-переменные
Хеш — это набор пар ключ / значение . Хеш-переменным предшествует знак процента (%). Чтобы сослаться на один элемент хэша, вы будете использовать имя переменной хеша, за которым следует «ключ», связанный со значением в фигурных скобках.
Вот простой пример использования хеш-переменных:
#!/usr/bin/perl %data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40); print "\$data{'John Paul'} = $data{'John Paul'}\n"; print "\$data{'Lisa'} = $data{'Lisa'}\n"; print "\$data{'Kumar'} = $data{'Kumar'}\n";
Это даст следующий результат —
$data{'John Paul'} = 45 $data{'Lisa'} = 30 $data{'Kumar'} = 40
Переменный контекст
Perl обрабатывает одну и ту же переменную по-разному в зависимости от контекста, то есть ситуации, когда переменная используется. Давайте проверим следующий пример —
#!/usr/bin/perl @names = ('John Paul', 'Lisa', 'Kumar'); @copy = @names; $size = @names; print "Given names are : @copy\n"; print "Number of names are : $size\n";
Это даст следующий результат —
Given names are : John Paul Lisa Kumar Number of names are : 3
Здесь @names — это массив, который использовался в двух разных контекстах. Сначала мы скопировали его в любой другой массив, то есть в список, чтобы он возвращал все элементы, предполагая, что контекст является списочным контекстом. Затем мы использовали тот же массив и попытались сохранить этот массив в скаляре, поэтому в этом случае он вернул только количество элементов в этом массиве, предполагая, что контекст является скалярным контекстом. В следующей таблице перечислены различные контексты —
скаляр
Присвоение скалярной переменной оценивает правую часть в скалярном контексте.
Список
Присвоение массиву или хешу оценивает правую часть в контексте списка.
логический
Логический контекст — это просто любое место, где выражение оценивается, чтобы увидеть, является ли оно истинным или ложным.
пустота
Этот контекст не только не заботится о возвращаемом значении, он даже не хочет возвращаемого значения.
интерпол
Этот контекст происходит только внутри кавычек или вещей, которые работают как кавычки.