"Business::ISIN" is a class which validates ISINs (International Securities Identification Numbers), the
codes which identify shares in much the same way as ISBNs identify books. An ISIN consists of two
letters, identifying the country of origin of the security according to ISO 3166, followed by nine
characters in [A-Z0-9], followed by a decimal check digit.
The "new()" method constructs a new ISIN object. If you give it a scalar argument, it will use the
argument to initialize the object's value. Here, no attempt will be made to check that the argument is
valid.
The "set()" method sets the ISIN's value to a scalar argument which you give. Here, no attempt will be
made to check that the argument is valid. The method returns the object, to allow you to do things like
"$isin->set("GB0004005475")->is_valid".
The "get()" method returns a string, which will be the ISIN's value if it is syntactically valid, and
undef otherwise. Interpolating the object reference in double quotes has the same effect (see the
synopsis).
The "is_valid()" method returns true if the object contains a syntactically valid ISIN. (Note: this does
not guarantee that a security actually exists which has that ISIN.) It will return false otherwise.
If an object does contain an invalid ISIN, then the "error()" method will return a string explaining what
is wrong, like any of the following:
• 'xxx' does not start with a 2-letter country code
• 'xxx' does not have characters 3-11 in [A-Za-z0-9]
• 'xxx' character 12 should be a digit
• 'xxx' has too many characters
• 'xxx' has an inconsistent check digit
Otherwise, "error()" will return "undef".
"check_digit()" is an ordinary subroutine and not a class method. It takes a string of the first eleven
characters of an ISIN as an argument (e.g. "US459056DG9"), and returns the corresponding check digit,
calculated using the so-called 'double-add-double' algorithm.