#!/usr/bin/perl my $mode = 0; #mode 1 is 'strings', anything else is a typical hex view my @lines,@characters; while (<>) { push(@lines,$_); } foreach my $line (@lines) { while($line) { $lst = chop($line); unshift(@characters,$lst); } } my $length = @characters + 1; my $index = 0; while ($index < $length) { my @line = @characters[$index..($index+15)]; foreach my $char (@line) { unless ($mode == 1) { printf "%02x ", ord($char); } } unless ($mode == 1) { print "\t"; } foreach my $char (@line) { if((ord($char) > 32 ) && (ord($char) < 125)) { printf "%s", $char; } else { unless ($mode == 1) {print "." }} } unless ($mode == 1) { print "\n"; } $index += 15; } print "==== \n\ntotal length: $length\n";