my $hex= "ABC"; my $unsigned= unpack "V", pack "h*", "".reverse "00000000".$hex; my $signed= unpack "l", pack "L", unpack "V", pack "h*", "".reverse( ( $hex=~/^[89a-f]/i ? "F" : "0" ) x 8 . $hex );