⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 urn.pm

📁 1. 记录每个帖子的访问人情况
💻 PM
字号:
package URI::urn;  # RFC 2141require URI;@ISA=qw(URI);use strict;use Carp qw(carp);use vars qw(%implementor);sub _init {    my $class = shift;    my $self = $class->SUPER::_init(@_);    my $nid = $self->nid;    my $impclass = $implementor{$nid};    return $impclass->_urn_init($self, $nid) if $impclass;    $impclass = "URI::urn";    if ($nid =~ /^[A-Za-z\d][A-Za-z\d\-]*\z/) {	my $id = $nid;	# make it a legal perl identifier	$id =~ s/-/_/g;	$id = "_$id" if $id =~ /^\d/;	$impclass = "URI::urn::$id";	no strict 'refs';	unless (@{"${impclass}::ISA"}) {	    # Try to load it	    eval "require $impclass";	    die $@ if $@ && $@ !~ /Can\'t locate.*in \@INC/;	    $impclass = "URI::urn" unless @{"${impclass}::ISA"};	}    }    else {	carp("Illegal namespace identifier '$nid' for URN '$self'") if $^W;    }    $implementor{$nid} = $impclass;    return $impclass->_urn_init($self, $nid);}sub _urn_init {    my($class, $self, $nid) = @_;    bless $self, $class;}sub _nid {    my $self = shift;    my $opaque = $self->opaque;    if (@_) {	my $v = $opaque;	my $new = shift;	$v =~ s/[^:]*/$new/;	$self->opaque($v);	# XXX possible rebless    }    $opaque =~ s/:.*//s;    return $opaque;}sub nid {  # namespace identifier    my $self = shift;    my $nid = $self->_nid(@_);    $nid = lc($nid) if defined($nid);    return $nid;}sub nss {  # namespace specific string    my $self = shift;    my $opaque = $self->opaque;    if (@_) {	my $v = $opaque;	my $new = shift;	if (defined $new) {	    $v =~ s/(:|\z).*/:$new/;	}	else {	    $v =~ s/:.*//s;	}	$self->opaque($v);    }    return undef unless $opaque =~ s/^[^:]*://;    return $opaque;}sub canonical {    my $self = shift;    my $nid = $self->_nid;    my $new = $self->SUPER::canonical;    return $new if $nid !~ /[A-Z]/ || $nid =~ /%/;    $new = $new->clone if $new == $self;    $new->nid(lc($nid));    return $new;}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -