#!/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; } #### 00000000 6f 6e 65 0a 74 77 6f 0a 74 68 72 65 65 20 91 92 |one.two.three ..| 00000010 20 66 6f 75 72 0a 66 69 76 65 0a 6f 6e 65 0a 74 | four.five.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.three ..| 00000010 20 66 6f 75 72 0a 66 69 76 65 0a 6f 6e 65 0a 74 | four.five.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