$offset = 0; while (read(DATA, $data, BLOCKLEN, $offset)) { my $blockhdr = unpack "H*", substr($data, 0, BLOCKHDR); my $blockdt = unpack "H*", substr($data, BLOCKHDR, BLOCKDATA); my $cdrdata = unpack "H*", substr($data, BLOCKHDR+BLOCKDATA, CDRLENGTH); ... $offset += BLOCKLEN; ... $offset += BLOCKLEN; $offset -= 286;