Provided by: libbusiness-isin-perl_0.20-2_all bug


       Business::ISIN - validate International Securities Identification Numbers




           use Business::ISIN;

           my $isin = new Business::ISIN 'US459056DG91';

           if ( $isin->is_valid ) {
               print "$isin is valid!\n";
               # or: print $isin->get() . " is valid!\n";
           } else {
               print "Invalid ISIN: " . $isin->error() . "\n";
               print "The check digit I was expecting is ";
               print Business::ISIN::check_digit('US459056DG9') . "\n";


       Perl5, Locale::Country, Carp


       "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'


       "check_digit()" will croak with the message 'Invalid data' if you pass it an unsuitable


       Thanks to Peter Dintelmann ( and Tim Ayers
       ( for suggestions and help debugging this module.


       David Chan <>


       Copyright (C) 2002, David Chan. All rights reserved. This program is free software; you
       can redistribute it and/or modify it under the same terms as Perl itself.