NAME
Number::RecordLocator - Encodes integers into a short and easy to read and pronounce "locator string"
SYNOPSIS
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:
"ALWAYS TRUE\n"
if
$generator
->decode(
"B0"
) ==
$generator
->decode(
"PO"
);
However, this method provides an alternative:
my
$rl_string
=
$generator
->encode(725);
"ALWAYS TRUE\n"
if
$generator
->canonicalize(
"b0"
) eq
$rl_string
;
"ALWAYS TRUE\n"
if
$generator
->canonicalize(
"BO"
) eq
$rl_string
;
"ALWAYS TRUE\n"
if
$generator
->canonicalize(
"P0"
) eq
$rl_string
;
"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.