with your solution I'm gettig a segfault while executing. This either can mean it works and the adress 0x78000000 is just wrong for it (I need to find out where Perl does run in the virtual memspace...) or your solution is wrong.
Although less probable, seen in pack documentation:
If your system has a strange pointer size (i.e. a
pointer is neither as big as an int nor as big as a
long), it may not be possible to pack or unpack
pointers in big- or little-endian byte order.
Attempting to do so will result in a fatal error.