[Cascavel-pm] Dúvida sobre expressão regular
Nelson C. T. Ferraz
nferraz em phperl.com
Quinta Outubro 23 16:08:31 CDT 2003
Luis Campos de Carvalho wrote:
> Assim, escrever
>
> $thing =~ /thing/;
>
> ou
>
> $thing =~ m,thing,;
>
> ou
>
> $thing =~ m;thing;;
>
> é exatamente a mesma coisa...
Até recentemente eu sempre escrevia as expressões regulares assim:
$foo =~ /bar/;
Há algumas semanas, quando fui apresentar a palestra sobre Perl na
UNIFIEO, eu resolvi utilizar a sintaxe "m//", por uma questão de
didática e mnemônica (m = match, s = substitute):
$foo =~ m/bar/;
A primeira vantagem que eu percebi, é que esta sintaxe nos faz lembrar
que este operador tem um nome, é o "operador match". :)
Como o Luis comentou, o operador "m//" permite a utilizacão de
diferentes delimitadores:
$foo =~ m/bar/;
$foo =~ m!bar!;
$foo =~ m{bar};
Mais do que isso, eu diria que o operador "m//" *incentiva* o uso de
diferentes delimitadores, da mesma forma como o q// e o qq//. (Nestes
dois casos, nós estamos tão acostumados a modificar o delimitador que
nem lembramos qual é o padrão!)
$string = q/Jon 'Maddog' Orwant/;
$string = q{Jon 'Maddog' Orwant};
$string = q(Jon 'Maddog' Orwant);
Por uma questão de consistência e para aumentar a legibilidade do
código, acabei adotando o "m//" ao invés de "//", principalmente quando
eu tenho que explicar o código para alguém.
Para concluir, um trecho do Camel Book:
"Although we write m// and s/// here, you'll recall that you can pick
your own quote characters. On the other hand, for the m// operator only,
the m may be omitted if the delimiters you pick are in fact slashes.
(You'll often see patterns written this way, for historical reasons.)"
--
[]s
Nelson
________________________________________________________________
Nelson Ferraz
GNU BIS: http://www.gnubis.com.br
PhPerl: http://www.phperl.com
Mais detalhes sobre a lista de discussão Cascavel-pm