$x = "one\0two\0"; $b = pack "p", $x; # pointer to "one" $b .= pack 'I', 4 + unpack 'I', $b; # pointer to "two" = substr($x, 4) printf "length: %i\n", length $b; printf "%i %i\n", unpack "II", $b; printf "%s\n", $_ for unpack "pp", $b; #### printf "%s\n", $_ for unpack "P2P2", $b;