## Assume the first 8 bytes are a double in the 'other' endianess. ## And the next 4 a float. my $data = ...; my $doublePackedOtherEndian = substr $data, 0, 8; my $floatPackedOtherEndian = substr $data, 9, 4; ## Now reverse the bytes my $doublePackMyEndian = reverse $doublePackedOtherEndian; my $floatPackedMyEndian = reverse my $floatPackedOtherEndian; ## And unpack my $double = unpack 'd', $doublePackMyEndian; my $float = unpack 'f', $floatPackedMyEndian;