sub show { return join('', map { ord($_) > 0x3F ? $_ : sprintf('\\x%02X', ord($_)) } split(//, $_[0])) ; } ; my $hostname = 'much.ado.about.not.alot.org' ; my @labels = split(/\./, $hostname) ; my $n = scalar(@labels) ; my $question = pack("(C/a*)$n C n2", @labels, 0, 1, 1) ; print "\"", show($question), "\"\n" ;