[Cascavel-pm] problema em match de arquivos

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Terça Junho 13 06:19:37 PDT 2006


Oi,

--- breno em clavis.com.br escreveu:

> O código abaixo reproduz o problema (obs: o código é
> PARA WINDOWS, isso é importante
> frisar por causa das barras e do exemplo em si):

Use o módulo Config para identificar automaticamente o
separador de diretórios. Assim seu código vira
multiplaforma.

> esse código lê dois arquivos: "ignorado.txt"
> contendo apenas a linha:
> 
> \pagefile.sys
> 
> e "diretorio.txt", contendo apenas a linha:
> 
> \*
> 
> esse é o código que reproduz o problema:
> 
> --------------------8<----------------------
> open(ARQ, '<', 'ignorado.txt') or die "$!\n";
> chomp(my $ignorado = <ARQ>); # aqui eu leio
> '\pagefile.sys'
> close(ARQ);
> 
> open(ARQ, '<', 'diretorio.txt') or die "$!\n";
> chomp(my $dir = <ARQ>);  # aqui eu leio '\*'
> close(ARQ);
> my @lista_expandida = glob($dir);
> 
> foreach(@lista_expandida) {
>     print "comparando \"$_\" com
> \"$ignorado\"...\n";
>     if($_ =~ /^$ignorado/) {
>         print "*** ignorei $_ ***";
>     }
> }
> --------------------8<----------------------
> 
> note que coloquei dois print() dentro do foreach()
> para depurar, e ele simplesmente não
> entra dentro do if()... recebo até a saída:
> 
> comparando "\pagefile.sys" com "\pagefile.sys"...
> 
> alguém tem idéia do que pode estar acontecendo????
> 
> o problema acredito que esteja relacionado com a
> barra invertida, mas não sei como
> solucioná-lo e não posso retirar a barra...
> 
> curiosamente, se tiro o "^" do match dentro do if(),
> logo que ele compara
> "\pagefile.sys" com "\pagefile.sys" (onde deveria
> entrar, ele morre com o erro:
> 
> Can't find Unicode property definition "a"

Esses seus arquivos estão usando Unicode? Usar unicode
com Perl é meio chato (eu tentei um tempo depois
deixei pra lá).

Tente fazer comparação de strings usando eq ao invés
de expressões regulares: assumindo que a lista de
arquivos recuperada via glob não inseriu quebras de
linha ou outras coisas, você consegue fazer essa
comparação de forma máis rápida (e talvez resolva seu
problema).

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1

__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 


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