{gravando registros}

 
6.1 FILEHANDLE
  

O segredo de toda da gravação e leitura de registros com PERL está numa coisa chamada FILEHANDLE.

Podemos considerar um filehandle como sendo uma porta virtual que abrimos para um arquivo.Depois de aberta a porta podemos entrar e sair por ela: podemos gravar e ler registros no arquivo.

Acontece porém que uma porta aberta para gravar é diferente de uma porta aberta para ler.Temos que ter um filehandle para ler registros e um filehandle para gravar. Na realidade a coisa é mais complicada ainda. Podemos fazer três coisas com relação a trabalho com um arquivo em PERL:

Para cada situação dessas temos que criar um filehandle de forma diferente.Vamos ver:
  1. Para ler registros criamos um filehandle com a seguinte linha de comando:
  2. open(FILEHANDLE,"&ltpath do arquivo");

    Repare no sinal de menor-do-que ou flexa-para-a-esquerda antes do path mas DENTRO DAS ASPAS.

    Um filehandle pode ter qualquer nome.

    No provedor HIWAY um arquivo ARQ.TXT numa pasta PUBLIC, num site, tem o path:../PUBLIC/ARQ.TXT. Verifique com seu provedor como se designa paths de arquivos no seu caso.

  3. Para gravar registros no fim de um arquivo criamos o filehandle assim:
  4. open(FILEHANDLE,">&gtpath do arquivo");

    Caso o arquivo não exista, ele é criado.

     

  5. para APAGAR TODO O ARQUIVO e gravar novos registros temos:
  6. open(FILEHANDLE,"&gtpath do arquivo");
     

 Reparem que a diferença dos dois últimos casos é a quantidade de sinais menor-do-que ou flexa-para-a-direita. CUIDADO para não confundir e perder todo um arquivo!

Você pode achar estranha essa história de apagar arquivo e regravar, mas se leu atentamente o último capítulo entende porque. É que não se consegue fazer update facilmente em PERL e é possível (se seu arquivo for muito pequeno) usar o truque de se ler TODO o arquivo para um array-matriz; atualizar a linha e depois REGRAVAR TODO O ARQUIVO.
 
 
 
6.2 GRAVANDO UM REGISTRO 
 

Para gravar um registro ou uma linha num arquivo, depois de criar o filehandle com OPEN, é só dar um comando print junto com o filehandle de gravação do arquivo e o string a ser gravado.

SEMPRE SE GRAVA TODO O REGISTRO, como vimos no capítulo anterior. Por exemplo, para gravar o string: "XXXXX" num arquivo chamado arq1.txt teremos duas linhas de código:

open(fha1,">>../public/arq1.txt");

print fha1 "XXXXX\n";

No caso o filehandle se chamou:fha1.E definimos a gravação como apêndice.

Repare que colocamos o "scape" de linha seguinte (\n) depois do string para que o próximo registro seja gravado na linha seguinte. Essas gravações se assemelham a impressões, na realidade. Estamos "printando" no arquivo.

Poderíamos fazer um exercício simplíssimo de gravação de dois registros via Internet em que uma resposta é enviada "on-the-fly" para quem disparou o programa.Você pode ver isso nesse hipertexto. Não precisa fazer esse exercício (que chamamos de prog3.pl só para referência) na prática mas aprenda bem a idéia.

Repare porém a linha de comando:

close (FILEHANDLE);

colocada depois que encerramos a gravação dos registros. Para fechar a porta...
 
 
6.3 SEU NOME NO LIVRO DE OURO
 

Vamos fazer um exercício simples mas mais sofisticado que o anterior. Vamos misturar o prog2.pl com o prog3.pl.Veja como fica,no hipertexto o que podemos chamar de prog4.pl.

É claro que você tem que ter a página que dispara o programa que é semelhante ao prog2.html só mudando o nome do programa. Veja no hipertexto o que podemos chamar de prog4.html.

Você tem que adaptá-los as suas referências e transportá-los para o seu site (O programa, para o diretório executável (CGI-BIN?) no modo ASCII).

NÃO SE ESQUEÇA DE ACRESCENTAR O ARQUIVO MAGIC.TXT NO FINAL!!!!!

Pode. no entanto executar o nosso, deixando seu nome no livro de "chamada" do nosso curso (não vale assinar por outro).

Vamos mostrar no próximo capítulo como lemos esse e outros arquivos e projetamos na Internet, on-the-fly. Olha o programa rodando aí em baixo:

 

Entre com seu nome:

PS: Pode entrar com seu nome certo. Não vamos enviar propaganda para seu e-mail nem nada (As "bonecas" e apavorados podem entrar com o "nome de guerra").
 

OUTRO PS: Uma coisa importante de lembrar é que o UNIX é sensível a maiusculas e minúsculas.
Tome cuidado com isso que pode gerar muitos erros.