unpack
は pack
の逆を行う:TEMPLATE
は pack
関数 と同じフォーマットである。
以下は substring
を行うサブルーチンの例である。
sub substr { local($what,$where,$howmuch) = @_; unpack("x$where a$howmuch", $what); }そして、
sub ord { unpack("c",$_[0]); }さらに、フィールドに
%<数字>
という添え字をつけると、
アイテムそのものの代わりに、アイテムの<数字>ビットのチェックサムが得られる。
デフォルトは 16 ビットチェックサムである。
例えば、次の例では System V の sum
プログラムと同じ値が得られる。
while(<>) { $checksum += unpack("%16C*", $_); } $checksum %= 65536;See section pack.