PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 117


@а = ("quick",   "brown",   'fox"),

При большом количестве однословных элементов воспользуйтесь операто­ром qw():

@а = qw(Why are you teasing me7);


116   Глава 4 • Массивы

При большом количестве многословных элементов создайте встроенный доку­мент н последовательно извлекайте из пего строки:

Mines  =  (« END_OF_HERE_DOC    =' m/~\s*( +)/gm),

The boy stood on the burning deck,

It was as hot as glass END_OF_HERE_DOC

Комментарий

Наиболее распространен первый способ — в основном из-за того, что в виде литералов в программе инициализируются лишь небольшие массивы. Иници­ализация большого массива загромождает программу и усложняет ее чтение, поэтому такие массивы либо инициализируются в отдельном библиотечном файле (см. главу 12 «Пакеты, библиотеки и модули»), либо просто читаются из файла данных:

@bigarray =  (),

open(DATA, < mydatafile ) or die Couldn t read from datafile $'\n ,

while (<DATA>) {

chomp,

push(@bigarray, $_), }

Во втором способе используется оператор qw. Наряду с q(), qq() и qx() он предназначен для определения строковых величин в программе. Оператор q() интерпретируется по правилам для апострофов, поэтому следующие две строки эквивалентны:

$banner =   'The mines of Moria  , Sbanner = q(The mines of Moria),

Оператор qq() интерпретируется по правилам для кавычек:

$name =    Gandalf  ,

Sbanner =    Speak,   $name,  and enter1   ,

Sbanner = qq(Speak,   Sname,  and welcome1),

А оператор qx() интерпретируется почти так же, как и обратные апострофы, — то есть выполняет команду с интерполяцией неременных и служебными симво­лами \ через командный интерпретатор. В обратных апострофах интерполяцию отменить нельзя, а в qx — можно. Чтобы отказаться от расширения переменных Perl, используйте в qx ограничитель ':

$his_host = 'www perl com ,

$host_info                  = nslookup $his_host    , # Переменная Perl расширяется

$perl_info                          = qx(ps $$),    # Значение $$ от Perl




- Начало -  - Назад -  - Вперед -