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


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


sub cut2fmt  {

my((s>positions)  = @>_, my $template      = my $lastpos        = 1, foreach $place(positions)  {

Stemplate    =    A        ($place - $lastpos)             ";


1.2. Выбор значения по умолчанию   31

Slastpos      = $place;

}

Stemplate    = "A*';

return $template; }

$fmt = cut2fmt(8, 14, 20, 26, 30); print "$fmt\n", A7 A6 A6 A6 A4 A*

Возможности функции unpack выходят далеко за пределы обычной обработки текста. Она также обеспечивает преобразование между текстовыми и двоичными данными.

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

Описание функций unpack и substг в perlfunc(l); подпрограмма cut2fmt из рецепта 1.18. Применение unpack для двоичных данных демонстрируется в рецепте 8.18.

1.2. Выбор значения по умолчанию

Проблема

Требуется закрепить за скалярной переменной значение по умолчанию, но лишь в том случае, если оно не было задано ранее. Довольно часто требуется, чтобы стандартное значение переменной жестко кодировалось в программе, по его мож­но было переопределить из командной строки или переменной окружения.

Решение

Воспользуйтесь оператором | | или | | =, работающим как со строками, так и с числами:

U Использовать $Ь, если значение $Ь истинно, и $с в противном случае $а = $Ь || $с,

и Присвоить $х значение $у, но лишь в том случае, U если $х не является истинной $х ||= $у,

Если ваша переменная может принимать значения 0 или "0", воспользуйтесь функцией defined:

# Использовать $Ь, если значение $Ь определено, и $с в противном случае $а = defmed($b) ? $b  $c,

Комментарий

Главное отличие между этими двумя приемами (defined и | |) состоит, прежде всего, в том, что именно проверяется — определенность или истинность. В мире Perl три определенных значения являются ложными: 0, "0" и "". Если ваша пере­менная содержит одну из этих величин, но вы не хотите изменять ее, 11 не подой-


32   Глава 1 • Строки




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