$ perl -E 'say "\0"x64 ."A"x64' | hexdump -C 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000040 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAAAAAAAA| * 00000080 0a |.| 00000081 #### sub hexdump($data) { $data =~ s/\G(.{1,16})(\1+)?/ sprintf "%08X %-50s|%s|\n%s", $-[0], "@{[unpack q{(H2)8a0(H2)8},$1]}", $1 =~ y{ -~}{.}cr, "*\n"x!!$+[2] /segr . sprintf "%08X", $+[0] }