[Cascavel-pm] Apagar nomes em arquivo.

Gabriel Vieira gabriel.vieira em gmail.com
Terça Setembro 4 13:30:25 PDT 2007


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


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