bintzwing/compress/digitize.pl
2010-05-26 15:34:42 -07:00

22 lines
540 B
Perl
Executable file

#!/usr/bin/env perl
# Convert numbers to hex, when doing so is likely to increase compressibility.
# This actually makes the script slightly longer, but generally makes it compress
# to something shorter.
#
# Here we're targeting constants like 0xFF, 0xFFFF0000, 0x10101, 0x100000000, etc.
sub digitize {
my $number = shift;
if ($number >= 256) {
my $nn = sprintf("%x", $number);
if ($nn =~ /^[01f]+$/i) { return "0x$nn"; }
}
return $number;
}
while (<>) {
s/([^a-zA-Z0-9_])(\d+)/$1 . digitize $2/eg;
print;
}