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

📄 tabs.pm

📁 UNIX下perl实现代码
💻 PM
字号:
package Text::Tabs;require Exporter;@ISA = (Exporter);@EXPORT = qw(expand unexpand $tabstop);use vars qw($VERSION $tabstop $debug);$VERSION = 98.112801;use strict;BEGIN	{	$tabstop = 8;	$debug = 0;}sub expand{	my (@l) = @_;	for $_ (@l) {		1 while s/(^|\n)([^\t\n]*)(\t+)/			$1. $2 . (" " x 				($tabstop * length($3)				- (length($2) % $tabstop)))			/sex;	}	return @l if wantarray;	return $l[0];}sub unexpand{	my (@l) = @_;	my @e;	my $x;	my $line;	my @lines;	my $lastbit;	for $x (@l) {		@lines = split("\n", $x, -1);		for $line (@lines) {			$line = expand($line);			@e = split(/(.{$tabstop})/,$line,-1);			$lastbit = pop(@e);			$lastbit = '' unless defined $lastbit;			$lastbit = "\t"				if $lastbit eq " "x$tabstop;			for $_ (@e) {				if ($debug) {					my $x = $_;					$x =~ s/\t/^I\t/gs;					print "sub on '$x'\n";				}				s/  +$/\t/;			}			$line = join('',@e, $lastbit);		}		$x = join("\n", @lines);	}	return @l if wantarray;	return $l[0];}1;__END__=head1 NAMEText::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)=head1 SYNOPSISuse Text::Tabs;$tabstop = 4;@lines_without_tabs = expand(@lines_with_tabs);@lines_with_tabs = unexpand(@lines_without_tabs);=head1 DESCRIPTIONText::Tabs does about what the unix utilities expand(1) and unexpand(1)do.  Given a line with tabs in it, expand will replace the tabs withthe appropriate number of spaces.  Given a line with or without tabs init, unexpand will add tabs when it can save bytes by doing so.  Invisiblecompression with plain ascii!=head1 BUGSexpand doesn't handle newlines very quickly -- do not feed it anentire document in one string.  Instead feed it an array of lines.=head1 AUTHORDavid Muir Sharnoff <muir@idiom.com>

⌨️ 快捷键说明

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