#! /bin/perl $| = 1; sleep 10; for (;;) { sysread(STDIN, $buf, 65536) or die "read: $!"; hexdump($buf); } sub hexdump { my $buf = shift; my ($off, $i); while ($off < length($buf)) { printf "%08x : ", $off; for ($i = $off; $i < $off + 16; $i++) { if ($i >= length($buf)) { print "** "; } else { printf "%02x ", ord(substr($buf, $i, 1)); } } print ": "; for ($i = $off; $i < $off + 16; $i++) { if ($i >= length($buf)) { print "*"; } else { $ch = substr($buf, $i, 1); $code = ord($ch); if ($code < 32 || $code > 126) { print "."; } else { print $ch; } } } print "\n"; $off += 16; } print "\n"; }