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