<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=windows-1252"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Obrigado pelo incentivo!!...ainda mais vindo de pessoas experientes
como vc!!!<br>
<br>
Estou me dedicando bastante a aprender Perl...pela primeira vez sinto
que estou estudando a linguagem certa pra mim!...E confesso que estou
gostando muito, aliás parece que Perl está impregnando em mim!!...coisa
de louco!..rsrsr!<br>
<br>
<br>
Estou lendo: Learning Perl (5th-Edition)<br>
<br>
E aproveitando a deixa, além do PERLDOC e PERLRE, vc me sugere algum
outro livro (ou outro material ) para eu poder me exercitar mais em
Regex, tipo, fazer alguns exercícios, etc.<br>
<br>
Estou tendo um pouco de dificuldade em entender Regex, mas pelo que
tenho visto num é nenhum bicho de papão....acredito que com o uso
frequente vou entender melhor e com certeza vou precisar que vcs me
ajudem! Como disse espero que tenham paciência comigo, pois a vezes
para vcs algum erro ou dúvida minha pode ser banal, óbvio para vcs, mas
para mim pode ser "um divisor de águas" para eu entender os conceitos!<br>
<br>
Abraço,<br>
Flávio<br>
<br>
<br>
Daniel de Oliveira Mantovani escreveu:
<blockquote
 cite="mid:y2u214823ca1004251204o7d3f71b7n9e780553cb2c767a@mail.gmail.com"
 type="cite">
  <pre wrap="">2010/4/25 "Flávio R. Lopes" <a class="moz-txt-link-rfc2396E" href="mailto:flavio.lopes@links.inf.br">&lt;flavio.lopes@links.inf.br&gt;</a>:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Olá Mantovani!

Vc poderia me explicar melhor

Daniel de Oliveira Mantovani escreveu:

if( $names =~ m/(?&lt;last_name&gt;\w+) and \w+ \g{last_name}/ ) {
Ele não teria que retornar "Silva Flintstone" e nem ao menos "Silva"
porque dentro do buffer "&lt;foo&gt;" está "Flinstone", logo quando você faz
o backreference  \g{last_name},
você está capturando o buffer "&lt;foo"&gt; que é "Flinstone".


Até aqui blz!...entendi que foi armazena 'Flintstone' no buffer

Para o match do seu if ser verdadeiro, você precisa colocar a
backreference no lugar que faça o match, daquele jeito só daria certo
se o buffer fosse Silva.
if ( $names =~ m/(?&lt;last_name&gt;\w+) and \w+ \w+ \g{last_name}/ ) {
    say "I saw $+{last_name}";
}



É aqui que não estou enxergando o funcionamento da coisa!
Deixa ver se entendi!
O primeito "\w+ " seria [espaço]Wilma[espaço]
O segundo "\w+" seia [espaço]Silva[espaço]

O que vc faz é tipo de um "ponteiro" para compensar a inserção de mais uma
palavra antes que seja chamado o que está armazena no buffer \g{last_name},
que no caso é "Flintstone" ??
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Para você saber exatamente, perldoc perlre.

  </pre>
  <blockquote type="cite">
    <pre wrap="">Tipo assim, supondo que eu tivesse uma nova string:
my $names = 'Fred Manoel Silva Flinstone and Wilma Manoel Silva Flinstone';

eu teria que fazer no mei if :
if ( $names =~ m/(?&lt;last_name&gt;\w+) and \w+ \w+ \w+ \g{last_name}/ ) {
    say "I saw $+{last_name}";
}

É isto?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Sim, é isso mesmo. Até ontem você não sabia a diferença entre criar um
hash e imprimir um hash e hoje você já está entendendo expressões
regulares. Parabéns você está aprendendo bem rápido. Esse livro que
você está lendo, me parece interessante pois já está até falando de
Perl 5.10, qual o nome dele mesmo ?

[]'s

  </pre>
  <blockquote type="cite">
    <pre wrap="">Abraço,
Flávio



[]'s


2010/4/25 "Flávio R. Lopes" <a class="moz-txt-link-rfc2396E" href="mailto:flavio.lopes@links.inf.br">&lt;flavio.lopes@links.inf.br&gt;</a>:


Pessoal, estou tendo dificuldade em enxergar o funcionamento deste programa:

use 5.010;
my $names = 'Fred Flinstone and Wilma Flinstone';
if( $names =~ m/(?&lt;last_name&gt;\w+) and \w+ \g{last_name}/ ) {
  say "I saw $+{last_name}";
  }


Se eu alterar a variavel "$names" para:
my $names = 'Fred Silva Flinstone and Wilma Silva Flinstone';

O programa não me retorna mais o sobrenome!!

Como Perl faz esta busca?, ou seja, com o *\w* (que busca tudo) e tendo como
_delimitador_ o "and", ele não teria que me retornar "Silva Flintstone"
??...ou pelo menos "Silva" ??

Alguém pode me ajudar a enteder este código?

Abraço,
Flávio

_______________________________________________
SaoPaulo-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>





_______________________________________________
SaoPaulo-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>

    </pre>
  </blockquote>
  <pre wrap=""><!---->


  </pre>
</blockquote>
<br>
</body>
</html>