1 Cтруктуры данных

    Perl поддерживает три типа данных:
  • скаляры
  • массивы скаляров
  • ассоциативные массивы скаляров (так называемые хэши).

    Обычные массивы, как и в языке C, индексируются числами, начиная с нуля. Ассоциативные массивы индексируются строками. Простые скаляры (в дальнейшем мы будем также называть их переменными) всегда начинаются со знака доллара: $, даже в том случае, когда мы обращаемся к элементу массива.

 ¯

$day         простая переменная day

$day[28]     29  элемент массива day

$day{'Feb'}  значение 'Feb' из хэша %day

$#day        последний индекс массива @day

Простой массив начинается со знака @:

 ¯

   @day         массив day - ($day[1],$day[2],...)

   @day[3,4,5]  то же, что и @day[3..5]

     Ассоциативный массив (хэш) начинается со знака процент %:


%day (key1, val1, key2, val2, ...)

     Каждый тип данных имеет свое именное пространство, поэтому вы можете использовать одно и то же имя одновременно для скалярной переменной, массива или хэша (а также для подпрограммы или метки) без опасения, что произойдет ошибка. Perl различает большие и маленькие буквы: FOO, foo и Foo будут рассматриваться Perl-ом как разные переменные. Имена, начинающиеся с буквы или знака подчеркивания, могут в дальнейшем содержать в себе цифры или знаки подчеркивания. Имена, начинающиеся с цифры, могут в дальнейшем содержать только цифры. Имена, начинающиеся не с буквы, цифры или подчерка должны состоять только из одного символа. Большинство таких имен зарезервировано, например $$ является идентификатором текущего процесса. Интерпретация команды или величины часто зависит от требований контекста. Существует два основных контекста: скалярный и списковый. Некоторые операции возвращают список величин если в контексте подразумевается список и одну величину, если контекст скалярный. Например, операция &ora_fetch в скалярном контексте возвращает количество выбранных строк:
$nfields = &ora_fetch($csr);
В списковом контексте она возвращает массив выбранных строк:
@array = &ora_fetch($csr);
Левый аргумент определяет контекст правого аргумента.

2 Скалярные величины

    Скалярные переменные могут содержать различные простые типы данных, такие как числа, строки или ссылки. Они не могут содержать сложные типы, но могут содержать ссылку на массив или хэш. В булевском контексте скаляр принимает значение TRUE, если он содержит не нулевое число или не пустую строку. В Perl существует несколько способов записи чисел:

 ¯

  12345

  12345.67

  .23E-10

  0xffff            шестнадцатеричная запись

  0377             восьмеричная запись.

  1_234_567_890      подчерк для удобства чтения.

    Строки заключаются в одинарные или двойные кавычки. Использование кавычек в Perl такое же как в bourne shell-е: строка в двойных кавычках обрабатывается и вместо переменных подставляются их значения, а также обрабатываются бакслэш-последовательности, строки в одинарных кавычках рассматривается просто как последовательности символов. Используются также:

 ¯

  \t      табуляция

  \n     перевод строки

  \r      возврат каретки

  \b     пробел

  \e     символ Escape

  \033    восьмеричный формат

  \x1b    шестнадцатеричный формат

  \c[     управляющая последовательность (control)

  \a      сигнал (alarm)

  \f      переход на следующую страницу

3 Простые массивы

    Perl позволяет произвольно удлинять массив путем обращения к элементу, индекс которого больше, чем последний индекс массива. Так же можно произвольно уменьшить длину массива.
@day = ('a','b');
$day[3] = 'c';
Теперь массив day содержит три элемента: ('a','b','c').
@day = (); или, что то же самое: $#day = -1;
Теперь массив day пуст.
(@day, @month, &SomeSub) содержит в себе элементы массива day, за ними следуют элементы массива month, а за ними результат выполнения подпрограммы SomeSub. Пустой массив обозначается (). Массив ((),(),(),()) эквивалентен пустому массиву. Последний элемент массива может быть массивом или хэшэм:
($a, $b, @c)= split;
($a, $b, %c)= @_;
Любой элемент массива может быть массивом.

4 Ассоциативные массивы

    Ассоциативные массивы или хэши содержат пары ``ключ'' и ``значение''. Например:

  \%map = ('red',0x00f,'blue',0x0f0,'green',0xf00);

Часто для удобства чтения между ``ключом'' и ``значением'' ставят оператор =>.

  %map = (

          'red'   => 0x00f,

          'blue'  => 0x0f0,

          'green' => )xf00

         );

Сайт создан в системе uCoz