a745c072

П2.2 Cтруктуры данных



П2.2 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);

    Левый аргумент определяет контекст правого аргумента.



    Содержание раздела