NAME¶
Number::RecordLocator - Encodes integers into a short and easy to read and
pronounce "locator string"
SYNOPSIS¶
use Number::RecordLocator;
my $generator = Number::RecordLocator->new();
my $string = $generator->encode("123456");
# $string = "5RL2";
my $number = $generator->decode($string);
# $number = "123456";
DESCRIPTION¶
"Number::RecordLocator" encodes integers into a 32 character
"alphabet" designed to be short and easy to read and pronounce. The
encoding maps:
0 to O
1 to I
S to F
B to P
With a 32 bit encoding, you can map 33.5 million unique ids into a 5 character
code.
This certainly isn't an exact science and I'm not yet 100% sure of the encoding.
Feedback is much appreciated.
new¶
Instantiate a new "Number::RecordLocator" object. Right now, we don't
actually store any object-specific data, but in the future, we might.
init¶
Initializes our integer to character and character to integer mapping tables.
encode INTEGER¶
Takes an integer. Returns a Record Locator string.
decode STRING¶
Takes a record locator string and returns an integer. If you pass in a string
containing an invalid character, it returns undef.
canonicalize STRING¶
To compare a Record Locator string with another you can do:
print "ALWAYS TRUE\n" if $generator->decode("B0") == $generator->decode("PO");
However, this method provides an alternative:
my $rl_string = $generator->encode(725);
print "ALWAYS TRUE\n" if $generator->canonicalize("b0") eq $rl_string;
print "ALWAYS TRUE\n" if $generator->canonicalize("BO") eq $rl_string;
print "ALWAYS TRUE\n" if $generator->canonicalize("P0") eq $rl_string;
print "ALWAYS TRUE\n" if $generator->canonicalize("po") eq $rl_string;
This is primarily useful if you store the record locator rather than just the
original integer and don't want to have to decode your strings to do
comparisons.
Takes a general Record Locator string and returns one with character mappings
listed in "DESCRIPTION" applied to it. This allows string
comparisons to work. This returns "undef" if a non-alphanumeric
character is found in the string.
BUGS AND LIMITATIONS¶
No bugs have been reported.
Please report any bugs or feature requests to
"bug-number-recordlocator@rt.cpan.org", or through the web interface
at <
http://rt.cpan.org>.
AUTHOR¶
Jesse Vincent "<jesse@bestpractical.com>"
LICENCE AND COPYRIGHT¶
Copyright (c) 2006, Best Practical Solutions, LLC. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself. See perlartistic.