亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? backend.pm

?? 視頻監控網絡部分的協議ddns,的模塊的實現代碼,請大家大膽指正.
?? PM
?? 第 1 頁 / 共 3 頁
字號:
package CPANPLUS::Backend;use strict;use CPANPLUS::Error;use CPANPLUS::Configure;use CPANPLUS::Internals;use CPANPLUS::Internals::Constants;use CPANPLUS::Module;use CPANPLUS::Module::Author;use CPANPLUS::Backend::RV;use FileHandle;use File::Spec                  ();use File::Spec::Unix            ();use Params::Check               qw[check];use Locale::Maketext::Simple    Class => 'CPANPLUS', Style => 'gettext';$Params::Check::VERBOSE = 1;use vars qw[@ISA $VERSION];@ISA     = qw[CPANPLUS::Internals];$VERSION = $CPANPLUS::Internals::VERSION;### mark that we're running under CPANPLUS to spawned processes$ENV{'PERL5_CPANPLUS_IS_RUNNING'} = $$;### XXX version.pm MAY format this version, if it's in use... :(### so for consistency, just call ->VERSION ourselves as well.$ENV{'PERL5_CPANPLUS_IS_VERSION'} = __PACKAGE__->VERSION;=pod=head1 NAMECPANPLUS::Backend=head1 SYNOPSIS    my $cb      = CPANPLUS::Backend->new;    my $conf    = $cb->configure_object;    my $author  = $cb->author_tree('KANE');    my $mod     = $cb->module_tree('Some::Module');    my $mod     = $cb->parse_module( module => 'Some::Module' );    my @objs    = $cb->search(  type    => TYPE,                                allow   => [...] );    $cb->flush('all');    $cb->reload_indices;    $cb->local_mirror;=head1 DESCRIPTIONThis module provides the programmer's interface to the C<CPANPLUS>libraries.=head1 ENVIRONMENTWhen C<CPANPLUS::Backend> is loaded, which is necessary for justabout every <CPANPLUS> operation, the environment variableC<PERL5_CPANPLUS_IS_RUNNING> is set to the current process id.Additionally, the environment variable C<PERL5_CPANPLUS_IS_VERSION> will be set to the version of C<CPANPLUS::Backend>.This information might be useful somehow to spawned processes.=head1 METHODS=head2 $cb = CPANPLUS::Backend->new( [CONFIGURE_OBJ] )This method returns a new C<CPANPLUS::Backend> object.This also initialises the config corresponding to this object.You have two choices in this:=over 4=item Provide a valid C<CPANPLUS::Configure> objectThis will be used verbatim.=item No argumentsYour default config will be loaded and used.=backNew will return a C<CPANPLUS::Backend> object on success and die onfailure.=cutsub new {    my $class   = shift;    my $conf;    if( $_[0] && IS_CONFOBJ->( conf => $_[0] ) ) {        $conf = shift;    } else {        $conf = CPANPLUS::Configure->new() or return;    }    my $self = $class->SUPER::_init( _conf => $conf );    return $self;}=pod=head2 $href = $cb->module_tree( [@modules_names_list] )Returns a reference to the CPANPLUS module tree.If you give it any arguments, they will be treated as module namesand C<module_tree> will try to look up these module names andreturn the corresponding module objects instead.See L<CPANPLUS::Module> for the operations you can perform on amodule object.=cutsub module_tree {    my $self    = shift;    my $modtree = $self->_module_tree;    if( @_ ) {        my @rv;        for my $name ( grep { defined } @_) {            ### From John Malmberg: This is failing on VMS             ### because ODS-2 does not retain the case of             ### filenames that are created.            ### The problem is the filename is being converted             ### to a module name and then looked up in the             ### %$modtree hash.            ###             ### As a fix, we do a search on VMS instead --            ### more cpu cycles, but it gets around the case            ### problem --kane            my ($modobj) = do {                ON_VMS                    ? $self->search(                          type    => 'module',                          allow   => [qr/^$name$/i],                      )                    : $modtree->{$name}            };                        push @rv, $modobj || '';        }        return @rv == 1 ? $rv[0] : @rv;    } else {        return $modtree;    }}=pod=head2 $href = $cb->author_tree( [@author_names_list] )Returns a reference to the CPANPLUS author tree.If you give it any arguments, they will be treated as author namesand C<author_tree> will try to look up these author names andreturn the corresponding author objects instead.See L<CPANPLUS::Module::Author> for the operations you can perform onan author object.=cutsub author_tree {    my $self        = shift;    my $authtree    = $self->_author_tree;    if( @_ ) {        my @rv;        for my $name (@_) {            push @rv, $authtree->{$name} || '';        }        return @rv == 1 ? $rv[0] : @rv;    } else {        return $authtree;    }}=pod=head2 $conf = $cb->configure_object;Returns a copy of the C<CPANPLUS::Configure> object.See L<CPANPLUS::Configure> for operations you can perform on aconfigure object.=cutsub configure_object { return shift->_conf() };=head2 $su = $cb->selfupdate_object;Returns a copy of the C<CPANPLUS::Selfupdate> object.See the L<CPANPLUS::Selfupdate> manpage for the operationsyou can perform on the selfupdate object.=cutsub selfupdate_object { return shift->_selfupdate() };=pod=head2 @mods = $cb->search( type => TYPE, allow => AREF, [data => AREF, verbose => BOOL] )C<search> enables you to search for either module or author objects,based on their data. The C<type> you can specify is any of theaccessors specified in C<CPANPLUS::Module::Author> orC<CPANPLUS::Module>. C<search> will determine by the C<type> youspecified whether to search by author object or module object.You have to specify an array reference of regular expressions orstrings to match against. The rules used for this array ref are thesame as in C<Params::Check>, so read that manpage for details.The search is an C<or> search, meaning that if C<any> of the criteriamatch, the search is considered to be successful.You can specify the result of a previous search as C<data> to limitthe new search to these module or author objects, rather than theentire module or author tree.  This is how you do C<and> searches.Returns a list of module or author objects on success and falseon failure.See L<CPANPLUS::Module> for the operations you can perform on amodule object.See L<CPANPLUS::Module::Author> for the operations you can perform onan author object.=cutsub search {    my $self = shift;    my $conf = $self->configure_object;    my %hash = @_;    my ($type);    my $args = do {        local $Params::Check::NO_DUPLICATES = 0;        local $Params::Check::ALLOW_UNKNOWN = 1;        my $tmpl = {            type    => { required => 1, allow => [CPANPLUS::Module->accessors(),                            CPANPLUS::Module::Author->accessors()], store => \$type },            allow   => { required => 1, default => [ ], strict_type => 1 },        };        check( $tmpl, \%hash )    } or return;    ### figure out whether it was an author or a module search    ### when ambiguous, it'll be an author search.    my $aref;    if( grep { $type eq $_ } CPANPLUS::Module::Author->accessors() ) {        $aref = $self->_search_author_tree( %$args );    } else {        $aref = $self->_search_module_tree( %$args );    }    return @$aref if $aref;    return;}=pod=head2 $backend_rv = $cb->fetch( modules => \@mods )Fetches a list of modules. C<@mods> can be a list of distributionnames, module names or module objects--basically anything thatL<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=head2 $backend_rv = $cb->extract( modules => \@mods )Extracts a list of modules. C<@mods> can be a list of distributionnames, module names or module objects--basically anything thatL<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=head2 $backend_rv = $cb->install( modules => \@mods )Installs a list of modules. C<@mods> can be a list of distributionnames, module names or module objects--basically anything thatL<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=head2 $backend_rv = $cb->readme( modules => \@mods )Fetches the readme for a list of modules. C<@mods> can be a list ofdistribution names, module names or module objects--basicallyanything that L<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=head2 $backend_rv = $cb->files( modules => \@mods )Returns a list of files used by these modules if they are installed.C<@mods> can be a list of distribution names, module names or moduleobjects--basically anything that L<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=head2 $backend_rv = $cb->distributions( modules => \@mods )Returns a list of module objects representing all releases for thismodule on success.C<@mods> can be a list of distribution names, module names or moduleobjects, basically anything that L<parse_module> can understand.See the equivalent method in C<CPANPLUS::Module> for details onother options you can pass.Since this is a multi-module method call, the return value isimplemented as a C<CPANPLUS::Backend::RV> object. Please consultthat module's documentation on how to interpret the return value.=cut### XXX add direcotry_tree, packlist etc? or maybe remove files? ###for my $func (qw[fetch extract install readme files distributions]) {    no strict 'refs';    *$func = sub {        my $self = shift;        my $conf = $self->configure_object;        my %hash = @_;        local $Params::Check::NO_DUPLICATES = 1;        local $Params::Check::ALLOW_UNKNOWN = 1;        my ($mods);        my $tmpl = {            modules     => { default  => [],    strict_type => 1,                             required => 1,     store => \$mods },        };        my $args = check( $tmpl, \%hash ) or return;        ### make them all into module objects ###        my %mods = map {$_ => $self->parse_module(module => $_) || ''} @$mods;        my $flag; my $href;        while( my($name,$obj) = each %mods ) {            $href->{$name} = IS_MODOBJ->( mod => $obj )                                ? $obj->$func( %$args )                                : undef;            $flag++ unless $href->{$name};        }        return CPANPLUS::Backend::RV->new(                    function    => $func,                    ok          => !$flag,                    rv          => $href,                    args        => \%hash,                );    }}=pod=head2 $mod_obj = $cb->parse_module( module => $modname|$distname|$modobj|URI )C<parse_module> tries to find a C<CPANPLUS::Module> object thatmatches your query. Here's a list of examples you could give toC<parse_module>;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
51精品视频一区二区三区| 欧美一区二区三区四区久久| 国产欧美日本一区二区三区| 极品少妇一区二区三区精品视频 | 26uuu国产日韩综合| 人人狠狠综合久久亚洲| 欧美精品一二三| 性久久久久久久久久久久| 欧美中文字幕一区| 一区二区三区四区不卡在线 | 日韩电影在线免费看| 欧美色中文字幕| 亚洲国产一区二区三区青草影视| 91久久久免费一区二区| 亚洲免费在线视频| 在线精品视频一区二区| 亚洲va中文字幕| 欧美日本在线一区| 男人的天堂亚洲一区| 日韩欧美一级精品久久| 极品销魂美女一区二区三区| 久久视频一区二区| 成人一区二区三区| 中文字幕中文在线不卡住| www.欧美精品一二区| 亚洲天堂成人网| 欧美性一二三区| 日韩—二三区免费观看av| 欧美tickle裸体挠脚心vk| 国产一区二区三区免费在线观看 | 久久一夜天堂av一区二区三区| 国内精品久久久久影院一蜜桃| 久久久久国产精品人| 成人午夜大片免费观看| 国产精品福利在线播放| 欧亚一区二区三区| 日本成人在线一区| 精品国产区一区| 成人久久视频在线观看| 伊人夜夜躁av伊人久久| 欧美人xxxx| 国产一区在线视频| 亚洲欧美日韩国产手机在线| 欧美日韩视频在线观看一区二区三区 | 91精品国产综合久久国产大片| 日产国产欧美视频一区精品| 精品国产一区二区三区久久久蜜月| 国产精品一区二区在线观看不卡| 国产精品美女一区二区三区| 欧洲色大大久久| 麻豆精品久久精品色综合| 国产午夜三级一区二区三| 色婷婷精品大在线视频| 免费观看在线色综合| 中文字幕巨乱亚洲| 久久亚洲精精品中文字幕早川悠里| 国产91丝袜在线18| 亚洲一二三四区| 精品国产欧美一区二区| 99国产欧美另类久久久精品| 亚洲成人激情社区| 久久久久久麻豆| 色老头久久综合| 久久99精品久久久久婷婷| 中文字幕一区二区三区不卡在线 | 亚洲永久免费视频| 亚洲精品一区二区三区香蕉| 91在线视频网址| 麻豆91在线播放| 伊人一区二区三区| wwww国产精品欧美| 欧美专区亚洲专区| 国产suv精品一区二区6| 午夜精品福利在线| 国产精品丝袜黑色高跟| 91精品国产免费| 成人av网站免费| 青青草91视频| 一区av在线播放| 国产欧美综合色| 欧美一区欧美二区| 色婷婷精品久久二区二区蜜臀av | 欧美专区日韩专区| 高清在线成人网| 日韩精品乱码av一区二区| 综合久久久久久| 精品sm捆绑视频| 欧美日韩国产免费| 成人黄色网址在线观看| 久久99精品久久久久久国产越南 | 亚洲国产精品一区二区www在线| 久久精品视频在线免费观看| 欧美区视频在线观看| 91视频国产观看| 国产高清不卡一区二区| 日韩成人免费看| 亚洲精品国产a| 中文字幕av一区二区三区| 欧美一区二区播放| 精品视频色一区| 色综合久久88色综合天天免费| 福利一区二区在线| 国产麻豆精品一区二区| 日韩高清中文字幕一区| 亚洲一区二区精品视频| 国产精品高潮呻吟| 久久99国产精品久久| 亚洲18色成人| 一区二区在线观看视频| 日韩一区有码在线| 中文字幕免费不卡在线| 久久精品日韩一区二区三区| 日韩精品一区二区三区三区免费 | 3atv一区二区三区| 欧美日韩精品一区二区三区四区 | 99视频在线观看一区三区| 国产福利精品导航| 国产尤物一区二区| 国产毛片一区二区| 久久精品国产一区二区三| 蜜桃av一区二区| 日本美女一区二区| 日韩激情视频在线观看| 首页综合国产亚洲丝袜| 亚洲大型综合色站| 五月天亚洲精品| 亚洲成av人片| 首页国产欧美久久| 日本欧美加勒比视频| 青青青伊人色综合久久| 奇米影视7777精品一区二区| 日韩成人dvd| 蜜桃av一区二区三区电影| 蜜桃免费网站一区二区三区| 日本欧美大码aⅴ在线播放| 蜜桃视频免费观看一区| 久久精品国产亚洲a| 蓝色福利精品导航| 韩国av一区二区三区四区| 国产乱码精品一品二品| 国产福利一区在线| 国产.欧美.日韩| 成人av在线资源网站| eeuss鲁片一区二区三区在线观看| 99精品久久只有精品| 色综合 综合色| 欧美亚洲国产一区二区三区 | 欧美日韩国产首页| 日韩视频免费直播| wwwwxxxxx欧美| 中文一区在线播放| 国产精品欧美一区喷水| 亚洲精品国产a久久久久久| 亚洲午夜精品一区二区三区他趣| 日韩综合小视频| 精品一区二区精品| 福利电影一区二区| 日本高清不卡一区| 欧美二区乱c少妇| 精品国产123| 中文一区二区在线观看| 日韩一区欧美一区| 香蕉成人伊视频在线观看| 久久99久久精品欧美| 国产成人综合精品三级| 91社区在线播放| 欧美福利电影网| 久久久五月婷婷| 亚洲三级小视频| 日产国产高清一区二区三区| 狠狠久久亚洲欧美| 91视频在线观看| 9191国产精品| 国产农村妇女毛片精品久久麻豆| 亚洲精品网站在线观看| 日韩黄色免费电影| 国产成人啪免费观看软件| 一本大道久久a久久精品综合| 欧美精品自拍偷拍| 国产网站一区二区| 亚洲自拍都市欧美小说| 国产一区二区三区免费看 | 欧美亚洲综合另类| 精品乱人伦小说| 亚洲精品大片www| 精品一区二区三区av| 91丨九色丨黑人外教| 亚洲福利一二三区| 国内外精品视频| 欧美偷拍一区二区| 欧美大白屁股肥臀xxxxxx| 椎名由奈av一区二区三区| 免费人成黄页网站在线一区二区| av在线播放一区二区三区| 欧美高清视频一二三区| 国产精品视频在线看| 日韩成人免费看| 91蝌蚪porny| 精品国产一区二区三区av性色 | 亚洲国产日韩一级|