[Cascavel-pm] Teste para "Perl Job Developer"
Eden Cardim
edencardim em gmail.com
Terça Janeiro 2 07:25:06 PST 2007
On 1/2/07, Solli Honorio <shonorio em gmail.com> wrote:
> hummm para mim todos os prints resultaram em 'barfoo', mas o primeiro cara
> não deveria apenas imprimir bar ?
Ops, viajei, tanto no exemplo como na explicação...
perl -e'$_="SEEKING"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com SEEKING porque regexes são gulosas por padrão.
perl -e'$_="SEEKING"; print if s/(?:SEEKING)??/bar/;'
Aqui eu desativei a 'gula' então vai dar match com a string vazia que
tem antes do 'SEEKING'
perl -e'$_="foo"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com a string vazia que tem antes de 'foo'.
perl -e'$_="fooSEEKING"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com a string vazia que tem antes de 'foo' porque este é
o primeiro match possível.
perl -e'$_="fooSEEKING"; print if s/(?:SEEKING)?/bar/g;'
Tada!
Bem, o importante é perceber que s/(?:SEEKING)?/bar/ é diferente de
s//bar/. Os bugs criados por detalhes como esses em regexes são
bastante difíceis de depurar (pelo menos pra mim).
--
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
--
"you seem to think that 'close enough' is close enough...
please learn to be 'literal' around programming."
merlyn - on irc.freenode.net#perl
Mais detalhes sobre a lista de discussão Cascavel-pm