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);



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: