cpan.pm

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PM 代码 · 共 73 行

PM
73
字号
package LWP::Protocol::cpan;use strict;use vars qw(@ISA);require LWP::Protocol;@ISA = qw(LWP::Protocol);require URI;require HTTP::Status;require HTTP::Response;our $CPAN;unless ($CPAN) {    # Try to find local CPAN mirror via $CPAN::Config    eval {	require CPAN::Config;	if($CPAN::Config) {	    my $urls = $CPAN::Config->{urllist};	    if (ref($urls) eq "ARRAY") {		my $file;		for (@$urls) {		    if (/^file:/) {			$file = $_;			last;		    }		}		if ($file) {		    $CPAN = $file;		}		else {		    $CPAN = $urls->[0];		}	    }	}    };    $CPAN ||= "http://cpan.org/";  # last resort}# ensure that we don't chop of last part$CPAN .= "/" unless $CPAN =~ m,/$,;sub request {    my($self, $request, $proxy, $arg, $size) = @_;    # check proxy    if (defined $proxy)    {	return HTTP::Response->new(&HTTP::Status::RC_BAD_REQUEST,				   'You can not proxy with cpan');    }    # check method    my $method = $request->method;    unless ($method eq 'GET' || $method eq 'HEAD') {	return HTTP::Response->new(&HTTP::Status::RC_BAD_REQUEST,				   'Library does not allow method ' .				   "$method for 'cpan:' URLs");    }    my $path = $request->uri->path;    $path =~ s,^/,,;    my $response = HTTP::Response->new(&HTTP::Status::RC_FOUND);    $response->header("Location" => URI->new_abs($path, $CPAN));    $response;}1;

⌨️ 快捷键说明

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