[Cascavel-pm] Idiomas para open()... [Was: Perl]

Luis Motta Campos luismottacampos em yahoo.co.uk
Segunda Novembro 27 16:35:23 PST 2006


Thomas Britis wrote:
> Senhores,
> open (F, "<$file") é a mesma coisa que open (F, "<", $file) ???

  Depende muito da sua definição de "mesma coisa".

  Se "resultados parecidos" serve como definição de "mesma coisa",
então, sim, são a "mesma coisa".

  Eu tenho uns aninhos de estrada, e vejo coisas ruins:

  1. a primeira forma é open() de dois argumentos (ruim, veja a
discussão em volta deste tema);
  2. você usa muitas aspas interpolantes ('"'), o que normalmente é ruim
por si só;
  3. a primeira forma faz construção desnecessária de uma string (você
podia ter poupado o interpretador disso...)
  4. As duas formas usam uma /bareword/ ("F") como /handle/ para o arquivo;
  5. As duas formas usam parêntesis totalmente desnecessários;
  6. As duas formas tornam explícito um "default", que é abrir arquivos
em modo /read only/. Claro, todo mundo vai me criticar por eu dispensar
o /default/ explícito dizendo que é uma "boa prática", mas se é default,
para quê ser explícito?

  Quando (e somente quando) eu preciso *mesmo* abrir um arquivo, uso
normalmente assim:

  # Apenas leitura
  open my $handle, quotemeta $filename or die $!;

  # Apenas escrita
  open my $handle, '>', quotemeta $filename or die $!;

  e nunca, jamais se esqueça de fechar um arquivo que você abriu.
  Isto facilita a vida do Perl, que não precisa chamar muitas operações
para terminar um programa. (Um voluntário para fazer benchmark disto,
por favor...)

  Espero que eu tenha ajudado.
  Putamplexos!
-- 
Luis Motta Campos
Senior System Engineer at Segula.FR
Hobbyist Cooker and Photograph


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