você está aqui: Home  → Arquivo de Mensagens

Justificador de texto com Perl

Colaboração: Gustavo Chaves

Data de Publicação: 04 de Agosto de 2000

Aproveitando a deixa da mensagem sobre o justificador de texto com sed, enviada pelo Aurelio, o Gustavo me enviou um script similar que realiza a tarefa com perl:

  #!/usr/bin/perl -w
  # justify - justify text lines.
  # $Id: justify,v 1.2 2000/07/21 20:01:33 gustavo Exp $
  
  $columns = 65;
  
  while (<>) {
      s/\s+$/\n/;			      # trim trailing spaces
      next unless $columns > length;    # skip big lines
      @words   = split /(?<=\S)\s+/;    # split it preserving leading spaces
      $inter   = @words - 1;	      # number of interword spaces
      next unless $inter > 0;	      # skip single worded and blank lines
      $length  = 0;
      $length += length foreach @words; # sum up the size of the words
      $spaces  = $columns - $length;    # how many spaces for the line
      $blanks  = int($spaces / $inter); # how many spaces for each interword
      $extra   = $spaces % $inter;      # extra spaces due to rounding
      next if ($blanks + !!$extra) > 5; # skip if we have to add too much space
      # Go on, rebuild the line.
      $_       = '';
      for ($i=0; $i<$inter; ++$i) {
  	$_ .= $words[$i] . ' ' x ($blanks + ($i<$extra));
      }
      $_ .= $words[$i] . "\n";
  } continue {
      print;
  }


 

 

Veja a relação completa dos artigos de Gustavo Chaves

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script