
exim-users at spodhuis
Dec 31, 2011, 1:39 PM
Post #3 of 5
(528 views)
Permalink
|
On 2011-12-31 at 06:28 -0500, Phil Pennock wrote: > I'm assuming you're after decoding the time from the first part of the > message id, per "3.4 Message identification", and are not concerned > about portability to MacOS? If you do care about MacOS, then this, but I suggest coming up with a better name for the function and constants. ----------------------------8< cut here >8------------------------------ #!/usr/bin/perl use warnings; use strict; use constant BASE62DICT => join('', 0..9, 'A'..'Z', 'a'..'z'); # The approach of redefining "62" is what Exim uses. :) use constant BASE62SIZE => $^O eq "darwin" ? 36 : 62; sub base62_to_num { my @input = split(//, $_[0]); my $result = 0; foreach my $b62digit (@input) { my $offset = index BASE62DICT, $b62digit; if ($offset == -1 or $offset >= BASE62SIZE) { die "exception/base62_to_num: invalid base62 digit: $b62digit"; } $result *= BASE62SIZE; $result += $offset; } return $result; } foreach my $arg (@ARGV) { if ($arg =~ /-/) { print "$arg :\n"; foreach my $x (split(/-/, $arg)) { print "\t$x\t", base62_to_num($x), "\n"; } } else { print $arg, "\t", base62_to_num($arg), "\n"; } } ----------------------------8< cut here >8------------------------------ -- https://twitter.com/syscomet -- ## List details at https://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
|