22 lines
540 B
Perl
Executable file
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;
|
|
}
|
|
|