[Cascavel-pm] Dúvida estúpida

Marco A P D'Andrade mdacwb em gmail.com
Domingo Abril 15 08:06:24 PDT 2007


Apenas completando o meu raciocinio, com a resposta do Adriano...

Vc abre quantos arquivos necessitar, com filehandles distintos ...

open(ARQ, "> arq1.txt") || die "F1: $!";
open(ARQ2, "> arq2.txt") || die "F2: $!";


Em 14/04/07, Adriano Ferreira<a.r.ferreira em gmail.com> escreveu:
> On 4/14/07, "Iberê O. Kuntz de Souza" <kuntzzz em gmail.com> wrote:
> > Acheii, ta aqui oh:
> >
> > "Nao feche seus arquivos com close - eles serao fechados no proximo
> > open." - Eficiencia do programador, Programcao Perl 3ed.
>
> Isto significa que se você fizer
>
>     open ARQ, '>', 'arquivo1.txt' or die $!;
>
>     ...
>
>     # e depois
>
>     open ARQ, '>', 'arquivo2.txt' or die $!;
>
> O handle aberto para o 'arquivo1.txt' será fechado antes de abrir o
> 'arquivo2.txt' (coisa que - se não me engano - a linguagem C não faz
> para você). Como acima, esta observação serve para quando você usa o
> mesmo filehandle (no caso o glob ARQ). Também valeria se você tivesse
> aberto com uma variável léxica como hoje é recomendado.
>
>     open my $arq, '>', 'arquivo1.txt' or die $!;
>
> Por outro lado, este conselho é controverso também hoje. Muitos pregam
> que o close deve ser explícito para evitar que você tenha de pensar
> demais sobre onde este fechamento acontece. O close explícito é bom
> para a manutenção do programa.
>
> Saudações,
> Adriano.
>
>


Quanto ao close para manutenção de codigo x eficiencia do
programador... são os opostos... "Perl Best Practicals" x "Programming
Perl, Advanced Programming Perl, etc".

Os dois casos se aplicam em situações distintas. Se vc vai fazer um
script simples e de poucas linhas, para processar apenas alguns logs,
não precisa se preocupar com manutenção, mas para sistemas maiores, é
essencial!


Isso é Perl levado a sério, não apenas a diversão que nos propicia ;)


Sds,
Marco Antonio


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