[Cascavel-pm] Mais uma pergunta idiota de REGEX !!!

Solli Moreria Honorio shonorio em terra.com.br
Segunda Junho 28 20:58:27 CDT 2004


>
>   Gostaria de saber o que os Monges acham deste tipo de patrocínio,
mas 
>é sério pessoal... a gente pode acabar usando camisas com o logo do
Perl 
>em uma manga e o logo do O'Malleys na outra... e isso pode ser bom ou 
>ruim para a nossa imagem. Por favor pesem bem vossas respostas.

Pelos menos poderemos ser conhecido como bons de copo :-)

>   Se você quer comparar strings, use 'eq' (igualdade alfanumérica) ou 
>'cmp' (comparação alfanumérica). Se você quer comparar números use '=='

>(igualdade numérica) ou '<=>' (comparação numérica).

O '==' foi um deslize porque eu estou trabalhando bastante com outra
linguagem que não faz esta distinção, mas é claro que sei a diferença
entre '==' e 'eq'

>   Não pode dizer isso. $Valor =~ /^$procurado/ pode ser *true* em
casos 
>como
A minha dúvida é quando eu uso o '^' e o '$' entre o valor desejado, na
minha leitura isto siginfica exatamente o valor, e ai qual seria a
vantagem de utilizar expressões regulares.
<code>
   #!/usr/bin/perl
   $Valor = 'Fred Flintstone';
   $procurado = 'Fred';

   if( $Valor =~ /^$procurado/ )  # Imprime
   {
        print "Regexp vale!!!\n";
   }
   if( $Valor =~ /^$procurado$/ ) # Não imprime
   {
        print "Regexp vale\n!";
   }
   if( $Valor eq $procurado ) # e não imprime
   {
        print "É igual !!!\n";
   }
<\code>
Utilizando o seu exemplo, eu concluo que a minha leitura está correta
(coisa rara hein !!), mas mesmos assim não consiguo compreender porque o
cara utiliza expressão regular para isto, você mesmo disse em um email
passado sobre as melhores prática em Perl para não utilizar expressões
regulares sem necessidades.

>   Expressões regulares tem efeitos nem sempre simples de se vislumbrar

>e são certamente muito dispendiosas (em termos de recursos) para se
usar 
>em testes lógicos simples.
Estou perguntando isto porque tenho visto este tipo de expressão em
muitos códigos de sistemas 'famosos' em Perl, como o 'SpamAssassin' e
alguns outros no qual estou trabalhando. Isto pode significar um mau uso
da lingaguem ?

>   Espero que isso sane completamente suas dúvidas...
Ainda não... mas estou ancioso para isto !!!






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