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

📄 cap.pm

📁 Astercon2 开源软交换 2.2.0
💻 PM
📖 第 1 页 / 共 2 页
字号:
	    # 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;	    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 + -