[Cascavel-pm] erro ao utilizar dois filehandles
Alceu Rodrigues de Freitas Junior
glasswalk3r em yahoo.com.br
Quarta Abril 9 14:05:42 CDT 2003
Olá lista,
Abaixo segue um script bem simples, mas que não funciona. Eu nem imagino o que pode estar acontecendo de errado:
--
opendir(DIR,"$dir");
my @dir_list = readdir(DIR);
close(DIR);
my $file;
foreach $file(@dir_list) {
next if $file eq '.';
next if $file eq '..';
# lendo o arquivo
open(FILE,"<$dir/$file") || die "cannot open $dir/$_: $!\n";
my $file_name = $file;
$file_name =~ s/\.html/\.txt/;
open(SAIDA,">$dir/$file_name") || die "cannot create $dir/$file_name: $!\n";
my @array;
while (<FILE>) {
# pulando coisas indesejadas
next if /^<html.*>/i;
next if /^<meta.*>/i;
next if /^<head.*>/i;
next if /^<\/head>/i;
next if /<title>/i;
next if /<body.*>/i;
next if /<\/body>|<\/head>/;
next if /^\n$/;
# limpando tags html
s/<.*?>//g;
s/<\/.*?>//g;
#removendo espaços iniciais e finais, assim como tabulações
s/^\t|\t$//;
s/^\s|\t$//;
next if /^\n$/;
print SAIDA "$_";
}
close(SAIDA);
close(FILE);
--
Eu resolvi o problema usando "push (@array, $_)" dentro do loop while, substituindo o "print SAIDA "$_", e posteriormente imprimindo esse array.
Só que eu fiquei curioso com a não impressão. Se eu imprimir fora do loop no filehandle SAIDA, funciona normalmente. Como eu declarei o SAIDA antes do loop while, não acho que seja problema de escopo.
[]'s
--
Alceu Rodrigues de Freitas Junior
glasswalk3r em yahoo.com.br
---------------------------------------------------------------
"The 7 Deadly Sins are:/ Wealth without work/ Pleasure without
conscience/ Knowledge without character/ Business without
morality/ Science without humanity/ Worship without sacrifice/
Politics without principle" - Mahatma Ghandi
Mais detalhes sobre a lista de discussão Cascavel-pm