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

📄 cap.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
📖 第 1 页 / 共 2 页
字号:
        if ( defined $field && $field =~ /^(\w\w)$/ )        {            $self->{ '_' . $field } = 1 unless defined $self->{ '_' . $1 };            # print STDERR "DEBUG: flag $1\n";        }        elsif ( defined $field && $field =~ /^(\w\w)\@/ )        {            $self->{ '_' . $1 } = "";            # print STDERR "DEBUG: unset $1\n";        }        elsif ( defined $field && $field =~ /^(\w\w)#(.*)/ )        {            $self->{ '_' . $1 } = $2 unless defined $self->{ '_' . $1 };            # print STDERR "DEBUG: numeric $1 = $2\n";        }        elsif ( defined $field && $field =~ /^(\w\w)=(.*)/ )        {            # print STDERR "DEBUG: string $1 = $2\n";            next if defined $self->{ '_' . ( $cap = $1 ) };            $_ = $2;            if ( ord('A') == 193 )            {               s/\\E/\047/g;               s/\\(\d\d\d)/pack('c',oct($1) & 0177)/eg;               s/\\n/\n/g;               s/\\r/\r/g;               s/\\t/\t/g;               s/\\b/\b/g;               s/\\f/\f/g;               s/\\\^/\337/g;               s/\^\?/\007/g;               s/\^(.)/pack('c',ord($1) & 31)/eg;               s/\\(.)/$1/g;               s/\337/^/g;            }            else            {               s/\\E/\033/g;               s/\\(\d\d\d)/pack('c',oct($1) & 0177)/eg;               s/\\n/\n/g;               s/\\r/\r/g;               s/\\t/\t/g;               s/\\b/\b/g;               s/\\f/\f/g;               s/\\\^/\377/g;               s/\^\?/\177/g;               s/\^(.)/pack('c',ord($1) & 31)/eg;               s/\\(.)/$1/g;               s/\377/^/g;            }            $self->{ '_' . $cap } = $_;        }        # else { carp "junk in $term ignored: $field"; }    }    $self->{'_pc'} = "\0" unless defined $self->{'_pc'};    $self->{'_bc'} = "\b" unless defined $self->{'_bc'};    $self;}# $terminal->Tpad($string, $cnt, $FH);=item B<Tpad>Outputs a literal string with appropriate padding for the current terminal.It takes three arguments:=over 2=item B<$string>The literal string to be output.  If it starts with a number and an optional'*' then the padding will be increased by an amount relative to this number,if the '*' is present then this amount will me multiplied by $cnt.  This partof $string is removed before output/=item B<$cnt>Will be used to modify the padding applied to string as described above.=item B<$FH>An optional filehandle (or IO::Handle ) that output will be printed to.=backThe padded $string is returned.=cutsub Tpad{    ## public    my $self = shift;    my ( $string, $cnt, $FH ) = @_;    my ( $decr, $ms );    if ( defined $string && $string =~ /(^[\d.]+)(\*?)(.*)$/ )    {        $ms = $1;        $ms *= $cnt if $2;        $string = $3;        $decr   = $self->{PADDING};        if ( $decr > .1 )        {            $ms += $decr / 2;            $string .= $self->{'_pc'} x ( $ms / $decr );        }    }    print $FH $string if $FH;    $string;}# $terminal->Tputs($cap, $cnt, $FH);=item B<Tputs>Output the string for the given capability padded as appropriate withoutany parameter substitution.It takes three arguments:=over 2=item B<$cap>The capability whose string is to be output.=item B<$cnt>A count passed to Tpad to modify the padding applied to the output string.If $cnt is zero or one then the resulting string will be cached.=item B<$FH>An optional filehandle (or IO::Handle ) that output will be printed to.=backThe appropriate string for the capability will be returned.=cutsub Tputs{    ## public    my $self = shift;    my ( $cap, $cnt, $FH ) = @_;    my $string;    $cnt = 0 unless $cnt;    if ( $cnt > 1 )    {        $string = Tpad( $self, $self->{ '_' . $cap }, $cnt );    }    else    {        # cache result because Tpad can be slow        unless ( exists $self->{$cap} )        {            $self->{$cap} =              exists $self->{"_$cap"}              ? Tpad( $self, $self->{"_$cap"}, 1 )              : undef;        }        $string = $self->{$cap};    }    print $FH $string if $FH;    $string;}# $terminal->Tgoto($cap, $col, $row, $FH);=item B<Tgoto>B<Tgoto> decodes a cursor addressing string with the given parameters.There are four arguments:=over 2=item B<$cap>The name of the capability to be output.=item B<$col>The first value to be substituted in the output string ( usually the columnin a cursor addressing capability )=item B<$row>The second value to be substituted in the output string (usually the rowin cursor addressing capabilities)=item B<$FH>An optional filehandle (or IO::Handle ) to which the output string will beprinted.=backSubstitutions are made with $col and $row in the output string with thefollowing sprintf() line formats: %%   output `%' %d   output value as in printf %d %2   output value as in printf %2d %3   output value as in printf %3d %.   output value as in printf %c %+x  add x to value, then do %. %>xy if value > x then add y, no output %r   reverse order of two parameters, no output %i   increment by one, no output %B   BCD (16*(value/10)) + (value%10), no output %n   exclusive-or all parameters with 0140 (Datamedia 2500) %D   Reverse coding (value - 2*(value%16)), no output (Delta Data)The output string will be returned.=cutsub Tgoto{    ## public    my $self = shift;    my ( $cap, $code, $tmp, $FH ) = @_;    my $string = $self->{ '_' . $cap };    my $result = '';    my $after  = '';    my $online = 0;    my @tmp    = ( $tmp, $code );    my $cnt    = $code;    while ( $string =~ /^([^%]*)%(.)(.*)/ )    {        $result .= $1;        $code   = $2;        $string = $3;        if ( $code eq 'd' )        {            $result .= sprintf( "%d", shift(@tmp) );        }        elsif ( $code eq '.' )        {            $tmp = shift(@tmp);            if ( $tmp == 0 || $tmp == 4 || $tmp == 10 )            {                if ($online)                {                    ++$tmp, $after .= $self->{'_up'} if $self->{'_up'};                }                else                {                    ++$tmp, $after .= $self->{'_bc'};                }            }            $result .= sprintf( "%c", $tmp );            $online = !$online;        }        elsif ( $code eq '+' )        {            $result .= sprintf( "%c", shift(@tmp) + ord($string) );            $string = substr( $string, 1, 99 );            $online = !$online;        }        elsif ( $code eq 'r' )        {            ( $code, $tmp ) = @tmp;            @tmp = ( $tmp, $code );            $online = !$online;        }        elsif ( $code eq '>' )        {            ( $code, $tmp, $string ) = unpack( "CCa99", $string );            if ( $tmp[$[] > $code )            {                $tmp[$[] += $tmp;            }        }        elsif ( $code eq '2' )        {            $result .= sprintf( "%02d", shift(@tmp) );            $online = !$online;        }        elsif ( $code eq '3' )        {            $result .= sprintf( "%03d", shift(@tmp) );            $online = !$online;        }        elsif ( $code eq 'i' )        {            ( $code, $tmp ) = @tmp;            @tmp = ( $code + 1, $tmp + 1 );        }        else        {            return "OOPS";        }    }    $string = Tpad( $self, $result . $string . $after, $cnt );    print $FH $string if $FH;    $string;}# $terminal->Trequire(qw/ce ku kd/);=item B<Trequire>Takes a list of capabilities as an argument and will croak if one is notfound.=cutsub Trequire{    ## public    my $self = shift;    my ( $cap, @undefined );    foreach $cap (@_)    {        push( @undefined, $cap )          unless defined $self->{ '_' . $cap } && $self->{ '_' . $cap };    }    croak "Terminal does not support: (@undefined)" if @undefined;}=back=head1 EXAMPLES    use Term::Cap;    # Get terminal output speed    require POSIX;    my $termios = new POSIX::Termios;    $termios->getattr;    my $ospeed = $termios->getospeed;    # Old-style ioctl code to get ospeed:    #     require 'ioctl.pl';    #     ioctl(TTY,$TIOCGETP,$sgtty);    #     ($ispeed,$ospeed) = unpack('cc',$sgtty);    # allocate and initialize a terminal structure    $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };    # require certain capabilities to be available    $terminal->Trequire(qw/ce ku kd/);    # Output Routines, if $FH is undefined these just return the string    # Tgoto does the % expansion stuff with the given args    $terminal->Tgoto('cm', $col, $row, $FH);    # Tputs doesn't do any % expansion.    $terminal->Tputs('dl', $count = 1, $FH);=head1 COPYRIGHT AND LICENSEPlease see the README file in distribution.=head1 AUTHORThis module is part of the core Perl distribution and is also maintainedfor CPAN by Jonathan Stowe <jns@gellyfish.com>.=head1 SEE ALSOtermcap(5)=cut# Below is a default entry for systems where there are terminals but no# termcap1;__DATA__vt220|vt200|DEC VT220 in vt100 emulation mode:am:mi:xn:xo:co#80:li#24:RA=\E[?7l:SA=\E[?7h:ac=kkllmmjjnnwwqquuttvvxx:ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[1;24r\E[24;1H:nd=\E[C:kd=\E[B::kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:kb=\0177:r2=\E>\E[24;1H\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E=:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:

⌨️ 快捷键说明

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