#!/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; }