NAME
    Text::Roman - Allows conversion between Roman and Arabic algarisms.

VERSION
    version 3.4

SYNOPSIS
        #!/usr/bin/env perl
        use strict;
        use warnings;
        use Text::Roman qw(:all);

        print int2roman(123), "\n";

        my $roman = "XXXV";
        print roman2int($roman), "\n" if isroman($roman);

        my $milhar = 'L_X_XXIII'; # = 60,023
        print milhar2int($milhar), "\n" if ismilhar($milhar);

DESCRIPTION
    This package supports both conventional Roman algarisms (which range
    from *1* to *3999*) and Milhar Romans, a variation which uses a bar
    across the algarism to indicate multiplication by *1_000*. For the
    purposes of this module, acceptable syntax consists of an underscore
    suffixed to the algarism e.g. IV_V = *4_005*. The term Milhar apparently
    derives from the Portuguese word for "thousands" and the range of this
    notation extends the range of Roman numbers to *3999 * 1000 + 3999 =
    4_002_999*.

    Note: the functions in this package treat Roman algarisms in a
    case-insensitive manner such that "VI" == "vI" == "Vi" == "vi".

    The following functions may be imported into the caller package by name:

FUNCTIONS
  isroman
    Tests a string to be a valid Roman algarism. Returns a boolean value.

  int2roman
    Converts an integer expressed in Arabic numerals, to its corresponding
    Roman algarism. If the integer provided is out of the range expressible
    in Roman notation, an *undef* is returned.

  roman2int
    Does the converse of "int2roman", converting a Roman algarism to its
    integer value.

  ismilhar
    Determines whether a string qualifies as a Milhar Roman algarism.

  milhar2int
    Converts a Milhar Roman algarism to an integer.

  ismroman/mroman2int/roman
    These functions belong to the module's old interface and are considered
    deprecated. Do not use them in new code and they will eventually be
    discontinued; they map as follows:

    *   ismroman => ismilhar

    *   mroman2int => milhar2int

    *   roman => int2roman

CHANGES
    Some changes worth noting from this module's previous incarnation:

    *namespace imports*
        The call to use must now explicitly request function names imported
        into it's namespace.

    *argument defaults/void context*
        All functions now will operate on $_ when no arguments are passed,
        and will set $_ when called in a void context. This allows for
        writing code like:

            @x = qw/V III XI IV/;
            roman2int() for @x;
            print join("-", @x);

        instead of the uglier:

            @x = qw/V III XI IV/;
            $_ = roman2int($_) for @x;
            print join("-", @x);

SPECIFICATION
    Roman algarisms may be described using the following BNF-like formula:

        a   = I{1,3}
        b   = V\a?|IV|\a
        e   = X{1,3}\b?|X{0,3}IX|\b
        ee  = IX|\b
        f   = L\e?|XL\ee?|\e
        g   = C{1,3}\f?|C{0,3}XC\ee?|\f
        gg  = XC\ee?|\f
        h   = D\g?|CD\gg?|\g
        j   = M{1,3}\h?|M{0,3}CM\gg?|\h

REFERENCES
    For a description of the Roman numeral system see:
    <http://www.novaroma.org/via_romana/numbers.html>. A reference to Milhar
    Roman alagarisms (in Portuguese) may be found at:
    <http://web.archive.org/web/20020819094718/http://www.estado.com.br/reda
    c/norn-nro.html>.

ACKNOWLEDGEMENTS
    This module was originally written by Peter de Padua Krauss and
    submitted to CPAN by Stanislaw Pusep <https://metacpan.org/author/SYP>
    who has relinquished control to Erick Calder
    <https://metacpan.org/author/ECALDER> since the original author has
    never maintained it and can no longer be reached.

    Erick have completely rewritten the module, implementing simpler
    algorithms to perform the same functionality, adding a test suite, a
    Changes file, etc. and providing more comprehensive documentation.

    Ten years later, Stanislaw returned as a maintainer.

AUTHOR
    Stanislaw Pusep <stas@sysd.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2003 by Erick Calder <ecalder@cpan.org>.

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

