ISBN ハイフン編集用テーブル生成

via http://d.hatena.ne.jp/natu_n/20061108/1162984712
ISBN はハイフンの位置が地域によって異なる。 The International ISBN Agency にあるスクリプトから編集用のテーブルを生成してみた。

#!/user/bin/perl
use strict;
use warnings;

use LWP::UserAgent;
use YAML qw/Dump/;
use JSON qw/objToJson/;

my $resp = LWP::UserAgent->new->get(
  'http://www.isbn-international.org/converter/ranges.js');
$resp->is_success
  or die;

my $areas = {};
my $js = $resp->content;
$areas->{$1} = {
    name => $2,
    ranges => [map { [split /-/] } split /;/, $3]
  }
  while ($js =~ /gi\.area(\d+)\.text="(.+)";\ngi\.area\d+\.pubrange="([\d\-;]+)";/g);

print Dump $areas;
print objToJson $areas;
# YAML
---
0:
  name: English speaking area
  ranges:
    -
      - 00
      - 19
    -
      - 200
      - 699
    -
      - 7000
      - 8499
    -
      - 85000
      - 89999
    -
      - 900000
      - 949999
    -
      - 9500000
      - 9999999
1:
  name: English speaking area
  ranges:
...

# JSON
{"99953":{"name":"Paraguay","ranges":[[0,2],[30,79],[800,999]]},"99923":{"name":"El Salvador","ranges":
...

実際ハイフン編集するときは探索しやすい形式に変換するかも。

調べごとをすると id:natu_n さんのところにたどり着くことが多い昨今。休み中に過去記事あさらせて頂きます。