in reply to selecting and converting a bitstring

You've a couple of mistakes:

  1. When packing your temp value, you've written d262, when you should have used 'd262'. (use warnings would have caught that.)
  2. If you want to perform math operations on your value, you need to unpack it to a number: See the unpack below.
$p = unpack 'v', pack 'H4', 'd262';; print $p;; 25298 $y = (($p & 0xFE00) >> 9) + 4;; $m = (($p & 0x01E0) >> 5) - 1;; $d = ($p & 0x001F);; print join '/', $y, $m, $d;; 53/5/18

Note you might need to use 'n' instead of 'v' for the unpacking depending upon the endianess of the data:

$p = unpack 'n', pack 'H4', 'd262';; print $p;; 53858 $y = (($p & 0xFE00) >> 9) + 4;; $m = (($p & 0x01E0) >> 5) - 1;; $d = ($p & 0x001F);; print join '/', $y, $m, $d;; 109/2/2

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: selecting and converting a bitstring
by momo33 (Beadle) on Nov 13, 2015 at 14:00 UTC
    Thank you! You explained the problem clearly and I got it working.