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

📄 withbase.pm

📁 1. 记录每个帖子的访问人情况
💻 PM
字号:
package URI::WithBase;use strict;use vars qw($AUTOLOAD $VERSION);use URI;$VERSION = "2.19";use overload '""' => "as_string", fallback => 1;sub as_string;  # help overload find itsub new{    my($class, $uri, $base) = @_;    my $ibase = $base;    if ($base && ref($base) && UNIVERSAL::isa($base, __PACKAGE__)) {	$base = $base->abs;	$ibase = $base->[0];    }    bless [URI->new($uri, $ibase), $base], $class;}sub new_abs{    my $class = shift;    my $self = $class->new(@_);    $self->abs;}sub _init{    my $class = shift;    my($str, $scheme) = @_;    bless [URI->new($str, $scheme), undef], $class;}sub eq{    my($self, $other) = @_;    $other = $other->[0] if UNIVERSAL::isa($other, __PACKAGE__);    $self->[0]->eq($other);}sub AUTOLOAD{    my $self = shift;    my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::')+2);    return if $method eq "DESTROY";    $self->[0]->$method(@_);}sub can {                                  # override UNIVERSAL::can    my $self = shift;    $self->SUPER::can(@_) || (      ref($self)      ? $self->[0]->can(@_)      : undef    )}sub base {    my $self = shift;    my $base  = $self->[1];    if (@_) { # set	my $new_base = shift;	# ensure absoluteness	$new_base = $new_base->abs if ref($new_base) && $new_base->isa(__PACKAGE__);	$self->[1] = $new_base;    }    return unless defined wantarray;    # The base attribute supports 'lazy' conversion from URL strings    # to URL objects. Strings may be stored but when a string is    # fetched it will automatically be converted to a URL object.    # The main benefit is to make it much cheaper to say:    #   URI::WithBase->new($random_url_string, 'http:')    if (defined($base) && !ref($base)) {	$base = ref($self)->new($base);	$self->[1] = $base unless @_;    }    $base;}sub clone{    my $self = shift;    my $base = $self->[1];    $base = $base->clone if ref($base);    bless [$self->[0]->clone, $base], ref($self);}sub abs{    my $self = shift;    my $base = shift || $self->base || return $self->clone;    $base = $base->as_string if ref($base);    bless [$self->[0]->abs($base, @_), $base], ref($self);}sub rel{    my $self = shift;    my $base = shift || $self->base || return $self->clone;    $base = $base->as_string if ref($base);    bless [$self->[0]->rel($base, @_), $base], ref($self);}1;__END__=head1 NAMEURI::WithBase - URIs which remember their base=head1 SYNOPSIS $u1 = URI::WithBase->new($str, $base); $u2 = $u1->abs; $base = $u1->base; $u1->base( $new_base )=head1 DESCRIPTIONThis module provide the C<URI::WithBase> class.  Objects of this classare like C<URI> objects, but can keep their base too.  The baserepresents the context where this URI was found and can be used toabsolutize or relativize the URI.  All the methods described in L<URI>are supported for C<URI::WithBase> objects.The methods provided in addition to or modified from those of C<URI> are:=over 4=item $uri = URI::WithBase->new($str, [$base])The constructor takes a an optional base URI as the second argument.If provided this argument initialize the base attribute.=item $uri->base( [$new_base] )This method can be used to get or set the value of the base attribute.The return value is the old value and will be an URI object or C<undef>.=item $uri->abs( [$base_uri] )The $base_uri argument is now made optional as the object carries itsbase with it.  A new object is returned even if $uri is alreadyabsolute (while plain URI objects will simply return themselves inthat case).=item $uri->rel( [$base_uri] )The $base_uri argument is now made optional as the object carries itsbase with it.  A new object is always returned.=back=head1 SEE ALSOL<URI>=head1 COPYRIGHTCopyright 1998-2002 Gisle Aas.=cut

⌨️ 快捷键说明

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