Finding if the system is little endian or big endian with perl
perl -MConfig -e 'print "$Config{byteorder}\n";'
See Perl documentation.
If the first byte of the output string is 1, you can assume (with moderate safety) that it is little-endian. If it is 4 or 8, you can assume big-endian.
I guess you could do:
$big_endian = pack("L", 1) eq pack("N", 1);
This might fail if your system has a nonstandard (neither big-endian nor little-endian) byte ordering (eg PDP-11).