Expandiendo y comprimiendo tabs

Este programa convierte los tabs en el número apropiado de blancos.
   1 #!/usr/bin/perl -w
   2 undef($/);
   3 $string = <>;
   4 $width=2;
   5 while ($string =~ s/\t+/' 'x(length($&)*$width-length($`)%$width)/e) {
   6 }
   7 print "$string";
Supuesto que los tabs se paran cada tpw = 8 posiciones se convierte a espacios calculando el correspondiente múltiplo de $tpw a partir de la posición actual. La función length devuelve la longitud en caracteres de la expresión que se le pasa como argumento. Si se omite la expresión usará la variable $_.

Sigue un ejemplo de ejecución:

> cat -t tabs.in
one^Itwo^I^Ithrei^I^I^I
four^I^I^I^Ifive^I^I^I^I^I
end
> tabs.pl tabs.in | cat -t
one     two             threi
four                           five
end

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19