[Cascavel-pm] Apagar nomes em arquivo.

Márcio Vitor cromo.jml em gmail.com
Terça Setembro 4 13:42:56 PDT 2007


MAL!!
Então melhor assim né ?

open(my $backup, '<', "$backupname" );
open(my $file, '>', "$filename" );

foreach my $name(@nomes) {
        excluir_nomes($name);
}

sub excluir_nomes {
        my $name = shift;
        while (<$backup>) {
                next if $_ =~ /^$name$/;
                print $file $_;
        }
}
close($file);
close ($backup);


On 9/4/07, Gabriel Vieira <gabriel.vieira em gmail.com> wrote:
>
> Abriria o arquivo a cada execução sem necessidade :)
>
> On 9/4/07, Márcio Vitor <cromo.jml em gmail.com> wrote:
> > A melhor opção para o caso seria mesmo o "tie", sem o tie eu faria desta
> > maneira:
> > ...
> > foreach my $name(@nomes) {
> >         excluir_nomes($name);
> > }
> > sub excluir_nomes {
> >         my $name = shift;
> >          open(my $backup, '<', "$backupname" );
> >         open(my $file, '>', "$filename" );
> >         while (<$backup>) {
> >                 next if $_ =~ /^$name$/;
> >                 print $file $_;
> >         }
> >         close($file);
> >         close ($backup);
> > }
> >
> > Não sei se isto resolve o problema, mas derepente elucida.
> >
> > Márcio Vitor
> >
> >
> > On 9/4/07, Gabriel Vieira <gabriel.vieira em gmail.com> wrote:
> > >
> > > tb nao executei mas o foreach aciona a subrotina antes de abrir os
> > > arquivos, não?
> > >
> > >
> > > On 9/4/07, Rafael Lebrão Martins <rafamv1 em ig.com.br> wrote:
> > > >
> > > > >> my $name;
> > > > >> foreach $name(@nomes) {
> > > > >> excluir_nomes($name);
> > > > >> }
> > > > >> copy($file, $backup);
> > > > >> open( ARQUIVO, '>', "$file" );
> > > > >> open( BACKUP, '<', "$backup" );
> > > > >>
> > > > >> sub excluir_nomes {
> > > > >> foreach ( ) {
> > > > >> next if $_ =~ /^$name$/;
> > > > >> print ARQUIVO $_;
> > > > >> }
> > > > >> }
> > > > >> close (ARQUIVO);
> > > > >> close (BACKUP);
> > > > >
> > > > >Não executei, mas parece correto.
> > > > >
> > > > >Talvez você ache bastante conveniente usar uma interface "tie" para
> seu
> > > > programa. Você recria a estrutura do arquivo numa estrutura de dados
> do
> > > > Perl, e ao remover uma linha desse estrutura, automaticamente o
> arquivo
> > será
> > > > atualizado.
> > > > >
> > > > >Seu programa também não está exatamente escrito para ter boa
> > performance,
> > > > mas se isso não é um problema, está correto. :-)
> > > > >
> > > > >[]'s
> > > > >Alceu
> > > >
> > > > Olá Alceu.. Vou estudar um pouco mais sobre o "tie" e seguir a sua
> > > > orientação. Se a minha lógica está correta, o código deveria
> apagar  no
> > > > arquivo, todos os nomes da lista "@nomes". Tentei novamente aqui e
> ele
> > apaga
> > > > todo o conteúdo mesmo!  Tem um detalhe também, depois de executar o
> > código
> > > > ele me retorna:
> > > >
> > > > readline() on unopened filehandle BACKUP at apgsub.pl line 36.
> > > >
> > > > mas, se estou certo, "BACKUP" está aberto!
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Cascavel-pm mailing list
> > > > Cascavel-pm em pm.org
> > > > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > > >
> > >
> > >
> > > --
> > > Gabriel Vieira
> > > _______________________________________________
> > > Cascavel-pm mailing list
> > > Cascavel-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > >
> >
> >
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
>
>
> --
> Gabriel Vieira
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070904/65a32b05/attachment.html 


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