Package above does not work in threaded scripts probably due to usage of eval. I have made a simpler version of the same package. See below:
#!/usr/bin/perl -w
# (c) Saulius Petrauskas 2012
# Lentele atspausdina duomenis is eilutes.
package HexPrint;
use strict;
BEGIN {
use Exporter ();
our ($VERSION, @ISA, @EXPORT);
$VERSION = 0.01;
@ISA = qw(Exporter);
@EXPORT = qw(&HexPrint);
}
sub HexPrint {
my $str = shift;
my $i = 0;
my $s = '';
print "
+--------------------------------------------------+------------------
++
| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF
+|
+--------------------------------------------------+------------------
++
| ";
$str =~ s/(.)/printf("%02X ",ord($1));$s.=$1;if($i++>14){$s=~s|[^
+-~]|.|g;print " | $s |\n| ";$s='';$i=0;}/gse;
if($i > 0) { # print tail
$s=~s|[^ -~]|.|g;
print " "x(16-$i) . " | $s" . " "x(16-$i) . " |\n";
}
print "+--------------------------------------------------+-----------
+-------+\n";
}
1;
|