#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11166492
use warnings;
use Path::Tiny;
use feature 'signatures';
my $file = path('../tmp.tmp'); # FIXME for testing
system "hexdump -C $file; echo";
print hexdump( $file->slurp );
sub hexdump($data) {
$data =~ s/\G(?|
( \0{16} )+ (?{ '*' })
| ( .{1,16} ) (?{
sprintf '%08X %-50s|%s|', $-[1],
"@{[unpack '(H2)8a0(H2)8', $1]}",
$1 =~ y{ -~}{.}cr
})
)/$^R\n/xsgr . sprintf "%08x\n", length $data;
}
Outputs:
00000000 6f 6e 65 0a 74 77 6f 0a 74 68 72 65 65 20 91 92 |one.two.t
+hree ..|
00000010 20 66 6f 75 72 0a 66 69 76 65 0a 6f 6e 65 0a 74 | four.fiv
+e.one.t|
00000020 77 6f 0a 74 68 72 65 65 20 2c 2c 20 66 6f 75 72 |wo.three
+,, four|
00000030 0a 66 69 76 65 0a |.five.|
00000036
00000000 6f 6e 65 0a 74 77 6f 0a 74 68 72 65 65 20 91 92 |one.two.t
+hree ..|
00000010 20 66 6f 75 72 0a 66 69 76 65 0a 6f 6e 65 0a 74 | four.fiv
+e.one.t|
00000020 77 6f 0a 74 68 72 65 65 20 2c 2c 20 66 6f 75 72 |wo.three
+,, four|
00000030 0a 66 69 76 65 0a |.five.|
00000036
|