Шаг 3 - Переменные в Perl

Переменных в перл, в отличии от таких языков, как С++ или 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");
Так же в перле есть указатели на переменные, но в данном шаге они как видите, рассматриваться не будут.


Предыдущий Шаг | Следующий Шаг | Оглавление

By Vasya Vazhesov.