[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