Okay, first I need to say, I love your BC solution. It's simple, and elegant. That being said I did some playing around with BigInt, so here's the code I came up with:
sub shift_bs{
$add = shift;
$source = shift;
$num1=Math::BigInt->new("0x".$source);
$num1->blsft(1);
$num1+=$add;
$temp = $num1->as_hex();
$temp =~ /0x(.*)/;
return $1;
}
Yeah, the $add is a legacy thing, but that's okay. I want to thank you especially, because you went to quite a bit of work to come up with that code.
==
Kwyjibo. A big, dumb, balding North American ape. With no chin.