| Server IP : 104.21.93.65 / Your IP : 104.23.197.33 Web Server : Apache System : Linux server.localhost.com 6.8.0-85-generic #85-Ubuntu SMP PREEMPT_DYNAMIC Thu Sep 18 15:26:59 UTC 2025 x86_64 User : pahana ( 1029) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/lib/x86_64-linux-gnu/perl-base/Text/ |
Upload File : |
use strict; use warnings;
package Text::Tabs;
BEGIN { require Exporter; *import = \&Exporter::import }
our @EXPORT = qw( expand unexpand $tabstop );
our $VERSION = '2021.0814';
our $SUBVERSION = 'modern'; # back-compat vestige
our $tabstop = 8;
sub expand {
my @l;
my $pad;
for ( @_ ) {
defined or do { push @l, ''; next };
my $s = '';
for (split(/^/m, $_, -1)) {
my $offs;
for (split(/\t/, $_, -1)) {
if (defined $offs) {
$pad = $tabstop - $offs % $tabstop;
$s .= " " x $pad;
}
$s .= $_;
$offs = () = /\PM/g;
}
}
push(@l, $s);
}
return @l if wantarray;
return $l[0];
}
sub unexpand
{
my (@l) = @_;
my @e;
my $x;
my $line;
my @lines;
my $lastbit;
my $ts_as_space = " " x $tabstop;
for $x (@l) {
defined $x or next;
@lines = split("\n", $x, -1);
for $line (@lines) {
$line = expand($line);
@e = split(/((?:\PM\pM*){$tabstop})/,$line,-1);
$lastbit = pop(@e);
$lastbit = ''
unless defined $lastbit;
$lastbit = "\t"
if $lastbit eq $ts_as_space;
for $_ (@e) {
s/ +$/\t/;
}
$line = join('',@e, $lastbit);
}
$x = join("\n", @lines);
}
return @l if wantarray;
return $l[0];
}
1;
__END__