$string = "nome";
$string =~ m/nome/; # true
Não precisa do m
se os delimitadores são /
(padrão):
$string = "nome";
$string =~ /nome/;
.
- qualquer caractere (exceto quebra de linha)*
- zero ou mais caracteres+
- um ou mais?
- zero ou um{n}
- n vezes{n,}
- mínimo n vezes{n,m}
- mínimo n vezes, máximo m vezes\
- metacaractere^
- começo da linha$
- final da linha (ou antes da quebra de linha)|
- OR()
- grupo de captura[]
- classe de caractere ([a-z]
,[0-9]
)\w
-[a-zA-Z0-9_]
\d
-[0-9]
\s
- espaços\W
- inverte\w
\D
- inverte\d
\S
- inverte\s
\b
- limite de palavras (espaço, ponto, exclamação etc.)\t
- tab\n
- newline\r
- return
m
- trata como múltiplas linhass
- trata como linha única (.
dá match com newline)i
- case insensitivex
- permite espaço na expressãog
- match globale
- executa código
Caracteres especiais e modificadores:
$string =~ s\s+/ /g; # mais de um espaço por espaço
$string =~ s/^\s+//; # remove espaços no começo da linha
$string =~ s/\s$//; # remove espaços no final da linha
Grupos de captura:
$string = "nome";
$string =~ m/(n...)/; # grupo de captura, guarda o resultado do match
$nome = $1; # "nome"
Substituições:
$string = "nome sobrenome"
$string =~ s/(\w)(\w+)/uc($1).$2/eg; # executa código perl na substituição
perl -e '$s="nome sobrenome"; $s =~ s/(\w)(\w+)/uc($1).$2/eg; print "$s\n"' # idem mas executando perl no shell