---
name: "Business::ISBN::Data"
section: "3pm"
platform: "linux"
package: "perl-business-isbn-data"
version: "20261016.001-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Business::ISBN::Data"
---

# Business::ISBN::Data(3pm)

data pack for Business::ISBN

## NAME

Business::ISBN::Data - data pack for Business::ISBN

## SYNOPSIS

see Business::ISBN

## DESCRIPTION

You don't need to load this module yourself in most cases. Business::ISBN will load it when it loads. You must use Business::ISBN 3.005 or later because the data structure changed slightly to fix a bug with ISBN13 prefixes.

These data are generated from the *RangeMessage.xml* file provided by the ISBN Agency. The distributed version matches the date in the version for this module. You can retrieve this yourself at \<https://www.isbn-international.org/range\_file\_generation\>. This file is included as part of the distribution and should be installed at *~lib/Business/ISBN/Data/RangeMessage.xml*.

If you want to use a different *RangeMessage.xml* file, you can set the `"ISBN_RANGE_MESSAGE"` environment variable to the alternate location before you load `"Business::ISBN"`. This way, you can use the latest (or even earlier) data without having to install something new or wait for an update to this module.

If the default *RangeMessage.xml* or your alternate one is not available, the module falls back to data included in *Data.pm*. However, that data are likely to be older. If it does not find that file, it looks for *RangeMessage.xml* in the current directory.

The data are in `%Business::ISBN::country_data` (although the "country" part is historical). If you want to see where the data are from, check `$Business::ISBN::country_data{_source}`.

### Packaging this module

The included *RangeMessage.xml* is in under *lib/* at the same level as *Data.pm*. The same data exist as the default data in the code, so you don't need to pass along the distributed *RangeMessage.xml*. However, you can include a newer *RangeMessage.xml*.

With PAR, you can add extra files to the archive with `"-a"`. Put the new file somewhere the module will find it (or use `"ISBN_RANGE_MESSAGE"` to lead it there):

```
        pp ... -a '..../RangeMessage.xml;RangeMessage.xml'
```

If you put the *RangeMessage.xml* in the current working directory of the application, the module should find it.

### Updating the default data

In the repo, find the *examples/make\_default\_data.pl* program. Run that against the latest *RangeMessage.xml*:

```
        % perl -Ilib examples/make_default_data.pl RangeMessage.xml
```

That produces the code you need to replace in the module. Check that that data aren't weird: sometimes the group names have errors or oddities. The program handles escaping single quotes and trimming white space.

## SOURCE AVAILABILITY

This module lives in a Github repository:

```
        https://github.com/briandfoy/business-isbn-data
```

You are probably also interested in the module that uses it:

```
        https://github.com/briandfoy/business-isbn
```

If you have something to add, create a fork on Github and send a pull request.

## AUTHOR

brian d foy, `"<briandfoy@pobox.com>"`

Yakov Shafranovich updated the data in October 2008.

Daniel Jakubik updated the data in July 2012.

Markus Spann suggested looking for *RangeMessage.xml* in the current directory to make it work with Perl app bundlers.

Josef Moravec `"<josef.moravec@gmail.com>"` updated the data in January 2019.

Peter Williams fixed a serious issue with ISBN-13 (GitHub #5). You must use Business::ISBN 3.005 or later because the data structure changed.

## COPYRIGHT AND LICENSE

Copyright © 2002-2026, brian d foy \<briandfoy@pobox.com\>. All rights reserved.

You may redistribute this under the terms of the Artistic License 2.0.
