|
Переменных в перл, в отличии от таких языков, как С++ или Pascal, всего три типа. Они подразделяются на скаляры, массивы и хеши - так называемые ассоциативные массивы. Так как это средство для обработки текста, они не делятся на текстовые и численные, для перла это все равно. |
|
Скаляры |
|
Скаляры могут иметь только одно значение, они начинаются со знака "$". |
|
Например: |
$Var1 = " HeLLo All !!!! :- )))))))))"; |
Где Var1 - имя этой переменной, "=" в данном случае присваивает переменной значение "HeLLo All !!!! :- )))))))))". |
|
Значение этой переменной можно вывести на экран таким образом: |
|
$Var1 = " HeLLo All !!!! :- )))))))))"; |
print "Значение \$Var1 = $Var1"; |
|
Появиться результат: |
Значение $Var1 = HeLLo All !!!! :- ))))))))) |
|
Обратите внимание на то, что перед первым $Var1 стоит знак "\", он сообщает компилятору, что следующее название переменной надо проигнорировать и вывести как обычную строку. После print текст может содержаться в двойных кавычках, если же вы напишите этот текст в одинарных кавычках (апострофах), то получится такой определённый казус: |
Значение $Var1 = $Var1; |
|
Если кто умеет программировать на SHELL под UNIX то, тот знает, что переменные и метасимволы в одинарных кавычках игнорируются. Раз уж мы начали говорить о строках, то надо еще сказать об обратном апострофе - так вот если вы заключите в них какую либо команду интерпретатора, то эта команда выполнится (примечание: если вы введете обычный текст, то эта строка пропускается интерпретатором) |
Пример: |
|
print "Сегодня: ",'date'; |
|
Результат: |
Сегодня: Oct 28 16:36:10 YEKST 1999 |
|
Заметьте, что можно сочетать любые виды кавычек разделяя их запятой. Можно так же записывать переменные вне скобок и результат будет таким же, как если бы мы поставили в двойные кавычки, но есть некоторые различия, некоторые из них мы рассмотрим в этой главе. |
|
Скалярам можно присвоить не только строки, но и числовое значение. Числа не заключаются в кавычки. |
|
Пример: |
|
$Var3 = 80; |
print "->$Var3<- "; |
|
Результат: |
->80<- |
|
Если вы занесли в скаляр число, то с ним можно проделывать всяческие арифметические операции, но об этом попозже. |
|
Массивы |
|
Массивы (списки скаляров) начинаются с символа "@" и могут содержать несколько значений. |
|
Значения в массивы можно занести следующим образом: |
|
@array = (1999,"Hello",'Привет',`date`); |
|
Можно так же обращаться к отдельному элементу этого массива с помощью скаляров и это будет равносильно предыдущему варианту: |
$array[0] = 1999; |
$array[1] = "Hello"; |
$array[2] = 'Привет'; |
$array[3] = `date`; |
|
Здесь первый символ знак доллара, после идет имя этого массива, а потом в квадратных скобках указывается элемент, к которому вы хотите обратиться. |
|
Если вы захотите вывести его, можно воспользоваться таким способом: |
|
print "This array : @array"; |
|
Результат: |
This array : 1999 Hello Привет Oct 28 16:36:10 YEKST 1999 |
|
Элементы массива будут располагаться через пробелы, а если сделать так: |
print "This array :",@array; |
|
Результат: |
This array :1999HelloПриветOct 28 16:36:10 YEKST 1999 |
|
Между элементами пробелов нет. |
|
В массив можно включить другой массив или скаляр, присвоив элементу массива, другую переменную: |
|
@mas2 = (@array," - массив в массиве, ", $var1,"- скаляр"); |
но если вы сделать таким образом: |
@mas2[1] = @array; |
то результатом этого будет присвоение @mas2[1] числа элементов массива @array, но если вы хотите все же включить @array в элемент массива, то поставьте его в двойные кавычки: |
@mas2[1] = "@array"; |
|
Хеш |
|
Хеши(ассоциативные массивы) - это тот же самое что обыкновенный массив, но в нем чередуются названия и значения, то есть что-то вроде name:Sidorov, где name - название, а Sidorov - значение. Хеши в основном служат для создания текстовых баз данных. Они начинаются со знака "%". Инициировать их можно как обыкновенные массивы: |
%hesh = ( 'name'," Sidorov ",'data_rozhdeniya',1900,'adress',"bomzh"); |
|
но есть и другие способы представления: через скаляры, к хешу можно обратиться следующим образом: |
$hesh{name} = Sidorov; |
$hesh{data_rozhdeniya} = 1900; |
$hesh{adress} = bomzh; |
|
- это будет равносильно вышеизложенному примеру. Но есть более удобные способы с помощью "=>" это выглядит примерно так: |
%hesh = ( name => "Sidorov", |
data_rozhdeniya =>1900, |
adress => "bomzh"); |
|
Так же в перле есть указатели на переменные, но в данном шаге они как видите, рассматриваться не будут. |