The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Math::BaseMulti - a perl module for creating identifiers with a per digit base

SYNOPSIS

  use Math::BaseMulti;

  $mbm = Math::BaseMulti->new(
    digits => [
      [ 0..9, 'A'..'Z' ],
      [ 0..9, 'A'..'Z' ],
      [ 0..9, 'A'..'Z' ],
      [ 0..9 ],
    ],
  );

  $mbm->to( 10 ); # will return "10"
  $mbm->to( 1000 ); # will return "2S0"
  $mbm->from( 'BA0' ); # will return 133310

  --

  $mbm = Math::BaseMulti->new(
    digits => [
      [ 'S' ],
      [ 'N' ],
      [ 0..9,'A'..'F','H','J','K','M','N','P','R'..'Z' ],
      [ 0..9,'A'..'F','H','J','K','M','N','P','R'..'Z' ],
      [ 0..9,'A'..'F','H','J','K','M','N','P','R'..'Z' ],
      [ 0..9,'A'..'F','H','J','K','M','N','P','R'..'Z' ],
      [ 0..9,'A'..'F','H','J','K','M','N','P','R'..'Z' ],
      [ 'A'..'Z' ],
    ],
        leading_zero => 1,
  );

  $mbm->to( 0 ); # will return "SN00000A"
  $mbm->to( 1 ); # will return "SN00000B"
  $mbm->to( 1000 ); # will return "SN00017M"

DESCRIPTION

Math::BaseMulti can be used to create identifiers with a base defined per digit.

The module provides conversion to/from such identifiers.

METHODS

new()

Creates an object instance.

Accepts parameters 'digits' and 'leading_zero'. For description see methods below.

from()

Expects a string in the format of defined by the parameter 'digits' and converts it to an Int value.

to()

Expects an Int value and converts it to a string in the format defined by the 'digits' parameter.

digits()

Accepts an array of arrays.

Each element in the the first array repersents a digit. From high to low. (Little-Endian) Each subarray contains a list of possible characters. The value will be the index of the character in this array. first element => 0, second element => 1, ...

leading_zero()

Defines if to() should always add padding zeros values.

DEPENDENCIES

Math::BaseMulti requires Moose.

COPYRIGHT AND LICENSE

Copyright 2012-2013 by Markus Benning

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.