#!/usr/bin/perl

if ($#ARGV < 2) {
print <<FIM;
-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Use: $0 <palavra-alvo> <nova-palavra> [lista de arquivos...]

Onde  <palavra-alvo>  é  a  palavra  a  ser substituída, 
<nova-palavra> é a palavra que substituirá  a ocorrência
da  palavra-alvo  e  [lista de arquivos...]  é opcional, 
podendo  conter  máscaras  como  *.txt,  por exemplo. Se
a lista de arquivos não for informada, todos os arquivos
do diretório serão processados.

-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
FIM
exit(1);
}

system("/usr/bin/clear");

# importe as palavras a serem manipuladas
$velha = shift();
$nova = shift();

print "Substituindo todas as ocorrências "; 
print "de \n\"$velha\" para \"$nova\"...\n\n";

# importe a lista de arquivos a ser processo
$cont = 0;
while ($arq[$cont++] = shift()) {next;}
if ($cont == 0) {$arq[$cont] = "*";}

# para cada arquivo ou máscara...
foreach $indice (0..$#arq) {
   $arquivos = `/bin/ls -d $arq[$indice]`;
   chop($arquivos);
   @arquivos = split(/\n/,$arquivos);
   # ... processe um arquivo individualmente
   foreach $arquivo (@arquivos) {
      # se o arquivo existe ;o)
      if (-f $arquivo) {
         print "Processando $arquivo...\n";
         system("/bin/sed -e \"s/$velha/$nova/g\" $arquivo > $arquivo.tmp");
         system("/bin/mv $arquivo.tmp $arquivo");
         print "... [ OK ]\n\n";
      }
   }
}
