unpack
Синтаксис
unpack TEMPLATE, EXPR
Описание
Функция unpack представляет собой полную противоположность
pack — она принимает в качестве аргумента строку, представляющую
собой некоторую структуру, и преобразует ее в списочное значение, возвращаемое в форме массива.
В скалярном контексте эта функция возвращает первое из сформированных значений.
Шаблон TEMPLATE имеет тот же формат, что и у функции pack.
Вот в качестве примера подпрограмма, выделяющая подстроки:
sub substr {
local($what, $where, $howmuch) = @_;
unpack("x$where a$howmuch", $what);
}
А в этом примере unpack работает аналогично функции ord:
sub ordinal { unpack("c",$_[0]); }
Кроме того, вы можете поместить перед описанием поля префикс вида <N>, который указывает,
что вы хотите получить N-битную контрольную сумму объектов вместо их самих. По умолчанию подсчитывается
16-разрядная контрольная сумма. Например, в показанном ниже фрагменте реализуется тот же
алгоритм, который используется программой sum из SySV:
while (<>) {
$checksum += unpack("%16C*", $_);
}
$checksum %= 65536;
И в заключение еще один нетрадиционный пример. Вот как можно легко и быстро подсчитать
количество установленных битов в битовом векторе:
$setbits = unpack("%32b*", $selectmask);
Thanks
2023-11-16 22:30:18 Svetlana Thank you very useful information
Оставить комментарий:
|
|