\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /usr/share/perl5/URI/urn/

Viewing File: isbn.pm

package URI::urn::isbn;  # RFC 3187

require URI::urn;
@ISA=qw(URI::urn);

use strict;
use Carp qw(carp);

BEGIN {
    require Business::ISBN;
    
    local $^W = 0; # don't warn about dev versions, perl5.004 style
    warn "Using Business::ISBN version " . Business::ISBN->VERSION . 
        " which is deprecated.\nUpgrade to Business::ISBN version 2\n"
        if Business::ISBN->VERSION < 2;
    }
    
sub _isbn {
    my $nss = shift;
    $nss = $nss->nss if ref($nss);
    my $isbn = Business::ISBN->new($nss);
    $isbn = undef if $isbn && !$isbn->is_valid;
    return $isbn;
}

sub _nss_isbn {
    my $self = shift;
    my $nss = $self->nss(@_);
    my $isbn = _isbn($nss);
    $isbn = $isbn->as_string if $isbn;
    return($nss, $isbn);
}

sub isbn {
    my $self = shift;
    my $isbn;
    (undef, $isbn) = $self->_nss_isbn(@_);
    return $isbn;
}

sub isbn_publisher_code {
    my $isbn = shift->_isbn || return undef;
    return $isbn->publisher_code;
}

BEGIN {
my $group_method = do {
    local $^W = 0; # don't warn about dev versions, perl5.004 style
    Business::ISBN->VERSION >= 2 ? 'group_code' : 'country_code';
    };

sub isbn_group_code {
    my $isbn = shift->_isbn || return undef;
    return $isbn->$group_method;
}
}

sub isbn_country_code {
    my $name = (caller(0))[3]; $name =~ s/.*:://;
    carp "$name is DEPRECATED. Use isbn_group_code instead";
    
    no strict 'refs';
    &isbn_group_code;
}

BEGIN {
my $isbn13_method = do {
    local $^W = 0; # don't warn about dev versions, perl5.004 style
    Business::ISBN->VERSION >= 2 ? 'as_isbn13' : 'as_ean';
    };

sub isbn13 {
    my $isbn = shift->_isbn || return undef;
    
    # Business::ISBN 1.x didn't put hyphens in the EAN, and it was just a string
    # Business::ISBN 2.0 doesn't do EAN, but it does ISBN-13 objects
    #   and it uses the hyphens, so call as_string with an empty anon array
    # or, adjust the test and features to say that it comes out with hyphens.
    my $thingy = $isbn->$isbn13_method;
    return eval { $thingy->can( 'as_string' ) } ? $thingy->as_string([]) : $thingy;
}
}

sub isbn_as_ean {
    my $name = (caller(0))[3]; $name =~ s/.*:://;
    carp "$name is DEPRECATED. Use isbn13 instead";

    no strict 'refs';
    &isbn13;
}

sub canonical {
    my $self = shift;
    my($nss, $isbn) = $self->_nss_isbn;
    my $new = $self->SUPER::canonical;
    return $new unless $nss && $isbn && $nss ne $isbn;
    $new = $new->clone if $new == $self;
    $new->nss($isbn);
    return $new;
}

1;