Иллюстрированный самоучитель по Perl

Разные операции

В этом параграфе собраны операции, которые не вошли ни в одну из рассмотренных нами групп операций. Две из них упоминались при описании массивов и хешей (операции диапазон и запятая), а третья является единственной тернарной операцией языка Perl (операция выбора).

Операция диапазон

Бинарная операция диапазон ".." по существу представляет две различных операции в зависимости от контекста, в котором она используется.

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

# Напечатает числа от 1 до 5, каждое на новой строке,
foreach $cycle (1..5){ print "$cycle\n"; }
# Напечатает строку "12345".
for(l..5){
print; '
}

(Операторы цикла рассматриваются в части 5.)

Замечание
Если значение какого-либо операнда не является целым, оно приводится к целому отбрасыванием дробной части числа
.

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

$min = 2;.
$max = <strong>~2;</strong>
Эаrrау = ($min.. $max); # Массив не определен.
print "Эаггау array\n" if defined(@array); # Печати не будет!
print "Sarray array\n" if Эаггау; # Печати не будет!

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

(-5..5) # Список чисел: (-2, -1, 0, 1, 2). (-5..-10) # Пустой список.

Если операндами операции диапазон являются строки, содержащие буквенно-цифровые символы, то в списковом контексте эта операция возвращает список строк, расположенных между строками операндов с использованием лексикографического порядка:

@а = ("a".."d"); # Массив @а: "а", "b", "с", "d"
@а = ("01".."31"); # Массив @а: "01", "02",…, "30", "31"
@а = ("al".."d4"); # Массив Эа: "a1", "a2", "аЗ", "а4"

Если левый операнд меньше правого, с точки зрения лексикографического порядка, то возвращается единственное значение, равное левому операнду.

Замечание
Операция диапазон не работает со строками, содержащими символы национальных алфавитов. В этом случае она всегда возвращает единственное значение, соответствующее левому операнду
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.