[SP-pm] Dúvida sobre comparação de Strings ( =~ ou eq )

thiagoglauco at ticursos.net thiagoglauco at ticursos.net
Mon May 31 05:26:18 PDT 2010


Bingo. Eh exatamente ai que erram os novatos. as expressoes regulares  
vao pegar qualquer sequencia de caracteres que contenham quit, se  
quiser marcar quit, exatamente quit e apenas quit com um regex seria  
algo mais parecido com

/^quit$/.

Por que? Por que a regex vai buscar qualquer string que contenha o  
padrao solicitado. Entao estamos buscando uma coisa mais ampla que um  
mero substr. Estamos buscando um padrao, uma mascara. Claro que voce  
pode fazer como eu mostrei acima e cercar o string com ^ $. Porem entre:

$str =~ /^quit$/ e $str eq 'quit'

a segunda eh mais facil? Por que? Por que a segunda opcao foi criada  
para verificar a igualdade de strings, nao um padrao em um string.

mas as funcoes de manipulacao de string:

substr
index
rindex
length
e os operadore eq e ne sao mais apropriados quando queremos algo bem definido.

veja:

quando o padrao eh uma string bem definida chuva a regex pode nao ser  
a melhor escolha:

[root em cg10bkn ~]# perl -e'
$str1 = qw/chuva/;
$str2 = qw/chuvarada/;
$str3 = qw/chuvao/;
print "A palavra chuvarada tem o padrao chuva\n" if $str2 =~ /$str1/;
print "A palavra chuvao tambem tem o padrao chuva\n" if $str3 =~ /$str1/;
print "A palavra chuvisco nao se encaixa\n" if 'chuvisco' =~ /$str1/;
> '

saída:

A palavra chuvarada tem o padrao chuva
A palavra chuvao tambem tem o padrao chuva


um colega achou má idéia usar index, length e substr. No seu caso  
concordo. um mero eq resolve tudo.

espero ter aliviado a sua dúvida. Este é um bom livro que você está  
foi um dos meus primeiros com Perl também, mas foi um edição mais  
antiga...

Quoting "Flávio R. Lopes" <flavio.lopes em links.inf.br>:

> Ok, Luis e Nelson.
> Estão me faltando conceitos!!..É que na verdade só estou lendo o   
> livro "Learning Perl 5th Edition".
> Seguirei o conselho de vocês sobre estas outras fontes de informações!
>
> Obrigado pela ajuda (e paciência),
>
> Abraço,
> Flávio
>
> Em 31-05-2010 07:11, Nelson Ferraz escreveu:
>>> Você deveria ler o artigo da Wikipedia sobre Gramáticas Regulares, vai
>>> te ajudar muito a entender o que você está fazendo.
>>>
>> Ou pelo menos, RTFM.
>>
>> Não sei dos outros aqui na lista, mas eu espero de qualquer um que
>> esteja programando em Perl há mais de uma semana que leia ao menos:
>>
>>     perldoc perl
>>     perldoc perlintro
>>     perldoc perlstyle
>>
>> Há mais de 15 dias:
>>
>>     perldoc perlrequick
>>     perldoc perlretut
>>     perldoc perlre
>>
>> Há mais de 1 mês:
>>
>>     perldoc perldsc
>>     perldoc perlreftut
>>
>> Você entrou na lista no dia 20 de março. Então, vamos lá! Comece a
>> exercitar o seu perldoc-fu! :)
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm

Thiago Glauco Sanchez
Instrutor de Perl
www.ticursos.net



More information about the SaoPaulo-pm mailing list