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


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


В следующем фрагменте использованы оба варианта:

sub what_about_that_array  {

print   'The array now has ",   scalar(@people),   ' elements.\n", print "The index of the last element is $#people \n"; print "Element #3 is  '$people[3]',\n',


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

^people = qw(Crosby Stills Nash Young), what_about_that_array(),

Результат:

The array now has 4 elements.

The index of the last element is 3.

Element «3 is 'Young'.

А другой фрагмент:

$#people--, what_about_that_array();

выводит следующий результат:

The array now has 3 elements.

The index of the last element is 2.

Element #3 is

Элемент с индексом 3 пропал при уменьшении массива. Если бы програм­ма запускалась с ключом -w, Perl также выдал бы предупреждение об использо­вании неинициализированной величины, поскольку значение $people[3] не определено.

В следующем примере:

$#people =  10_000, what_about^that_array(),

результат выглядит так:

The array now has 10001 elements.

The index of the last element is 10000.

Element #3 is

Элемент ' Young" безвозвратно утерян. Вместо присваивания $ffpeople можно было сказать:

$people[10_000]=undef,

Массивы Perl не являются разреженными. Другими словами, если у вас име­ется 10000-й элемент, то должны присутствовать и остальные 9999 элементов. Они могут быть неопределенными, но все равно будут занимать память. Из-за это­го $array[time] или любая другая конструкция, где в качестве индекса использу­ется очень большое целое число, является неудачным решением. Лучше восполь­зуйтесь хэшем.

При вызове print нам пришлось написать scalar @array, поскольку Perl ин­терпретирует большинство аргументов в списковом контексте, а требовалось зна­чение @аггау в скалярном контексте.

> Смотри также------------------------------------------------------------------------------- ;-----------------

Описание $#ARRAY вperldata(l).


4.4. Выполнение операции с каждым элементом списка    121

4.4. Выполнение операции с каждым элементом списка




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