[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