[Cascavel-pm] Dúvida estúpida

Luis Motta Campos luismottacampos em yahoo.co.uk
Segunda Abril 16 01:07:14 PDT 2007


On Apr 14, 2007, at 6:43 PM, Iberê O. Kuntz de Souza wrote:
> Acheii, ta aqui oh:
>
> "Nao feche seus arquivos com close - eles serao fechados no proximo
> open." - Eficiencia do programador, Programcao Perl 3ed.

   Isto está muito mal escrito, e estimula as pessoas a fazerem a  
coisa errada.
   O que ele quer dizer é que, em casos como este:

   #!perl
   open FILE, $filename or die $!;
   # usa o arquivo...
   open FILE, $outro_filename or die $!; # fecha o primeiro arquivo  
implícitamente.
   # usa o outro arquivo...
   close FILE;
   __END__

   Aqui tem dois problemas muito graves:
   1. Você não está dizendo explícitamente que deseja fechar o arquivo.
      Alguém fazendo manutenção no seu programa pode se confundir e  
imprimir para o arquivo errado.
   2. Você está reutilizando typeglobs como filehandles. Isso é  
considerado péssima prática de programação.
      Você deveria fazer assim:

      #!perl
      open my $handle1, '>', $filename or die $!;
      print $handle1 qq{Para o arquivo 1};
      open my $handle2, '>', $outro_filename or die $!;
      print $handle2 qq{Para o arquivo 2};
      close $handle1 or die $!;
      close $handle2 or die $!;
      __END__

   Espero que isso te ilumine.
   Por favor seja mais descritivo do que eu fui ao dar nomes de  
variáveis aos teus filehandles.
   Por favor seja mais claro do que eu fui ao usar o "die()" para  
sair com erros. Mensagens de erro são a única forma de ter certeza de  
que seus usuários vão poder te ajudar a resolver os problemas deles.

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




Mais detalhes sobre a lista de discussão Cascavel-pm