[Cascavel-pm] Criar links em um texto
Luis Motta Campos
luismottacampos em yahoo.co.uk
Segunda Julho 2 12:38:32 PDT 2007
fernandolouis em terra.com.br wrote:
> > Antes que alguém diga RTFM...
> Obrigado!
>
> > $texto =~ s/((\d+) refrigerantes)/<a
> href="lerolero.pl?quantidade=$2">$1<\/a>/g
> > O primeiro abre parênteses que bater vai para o $1
> > O segundo vai para $2
> > []s
> > Wendel
>
> PERFEITO Wendel!
> A "quantidade" e a "descrição" está resolvido. Realmente eu desconhecia
> essas variáveis especiais de expressões constantes.
>
> Mas e o "tipo"???
> se for "revista" deve ir "programa.pl?tipo=1" e se for "jornal" deve ir
> "programa.pl?tipo=2".
>
> não posso fazer um "if" dentro das regex... então como proceder?
Não, dentro das REs não se recomenda que se faça IFs (note que eu não
disse que não é possível.
Faz assim:
sub jornal_ou_revista {
my $palavra = lc shift;
return $palavra eq 'jornal'? 1 :
$palavra eq 'revista' ? 2 :
die qq{$palavra não é jornal nem revista!};
}
s{<<<REGEXP GRANDE E FEIA CAPTURANDO tipo e numero>>>}
{q{<a href="...}.$2.q{&tipo=}.jornal_ou_revista( $1 )}xe;
o "xe" no final da expressão regular permite que você interprete
código perl no segundo membro (a parte que vai ser colocada no lugar do
match), antes da substituição. A substituição usa a string que você
retornar com o código, não o código em si.
Eu ainda acho que a tua solução é uma vergonha para um doutorando.
Reconsidere as recomendações para usar Gramáticas no lugar de REs.
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão Cascavel-pm