More efficient way to cut buffer in DHexDump ()v0.37
authorH.Merijn Brand <merijn@lx09.procura.nl>
Mon, 16 Apr 2012 16:29:28 +0000 (16 18:29 +0200)
committerH.Merijn Brand <merijn@lx09.procura.nl>
Mon, 16 Apr 2012 16:29:28 +0000 (16 18:29 +0200)
Peek.pm

diff --git a/Peek.pm b/Peek.pm
index b0a4543..8c884e8 100644 (file)
--- a/Peek.pm
+++ b/Peek.pm
@@ -203,8 +203,8 @@ sub DHexDump
     my @out;
     my $var = @_ ? $_[0] : $_;
     defined $var or return;
-    my $str = "$var";  # force stringification
-    @_ > 1 && $_[1] < length $str and substr ($str, $_[1]) = "";
+    my $fmt = @_ > 1 && $_[1] < length ($var) ? "A$_[1]" : "A*";
+    my $str = pack $fmt, $var; # force stringification
     for (unpack "(A32)*", unpack "H*", $str) {
        my @b = unpack "(A2)*", $_;
        my $out = sprintf "%04x ", $off;