App-tabify
view release on metacpan or search on metacpan
lib/App/tabify.pm view on Meta::CPAN
use 5.010;
use strict;
use warnings;
use Getopt::Long::Complete qw(GetOptionsWithCompletion);
use POSIX qw(ceil);
my %Opts = (
tab_width => 8,
in_place => 0,
#backup_ext => undef,
);
sub parse_cmdline {
my $res = GetOptionsWithCompletion(
sub {},
'tab-width|w=i' => \$Opts{tab_width},
#'in-place|i' => sub { # XXX in-place|i:s doesn't work?
# $Opts{in_place} = 1;
# #$Opts{backup_ext} = $_[1] if defined $_[1];
#},
'version|v' => sub {
no warnings 'once';
say "tabify version $main::VERSION";
exit 0;
},
'help|h' => sub {
print <<USAGE;
Usage:
(un)tabify [OPTIONS] <FILE...>
lib/App/tabify.pm view on Meta::CPAN
my $which = shift; # either 'tabify' or 'untabify'
my $oldargv = '';
my $argvout;
my $tw = $Opts{tab_width};
LINE:
while (<>) {
#if ($ARGV ne $oldargv) {
# if (defined($Opts{backup_ext}) && $Opts{backup_ext} ne '') {
# rename $ARGV, "$ARGV$Opts{backup_ext}";
# open $argvout, ">", $ARGV;
# select $argvout;
# $oldargv = $ARGV;
# }
#}
if ($which eq 'untabify') {
1 while s|^(.*?)\t|$1 .
(" " x (ceil((length($1)+1)/$tw)*$tw - length($1)))|em;
} else {
s|^([ ]{2,})|
( run in 1.223 second using v1.01-cache-2.11-cpan-49f99fa48dc )