O que a variável $* da Perl costumava fazer?
-
21-09-2019 - |
Pergunta
Eu tenho algum código de http://www.hyllander.org/node/23 isso usa $*
("Dollar Asterisk" ou "Dollar Star"), mas minha versão do Perl relata:
$* is no longer supported at migrate.pl line 284.
Você sabe quais foram os efeitos colaterais de fazer
$*=1
De alguma forma afetou funções como split
ou tokenizadores ou expressões regulares?
Solução
Aqui está parte da saída de perldoc perlvar
:
$* Defina como um valor inteiro diferente de zero para fazer a correspondência de várias linhas em uma string, 0 (ou indefinida) para informar a Perl que pode assumir que as cadeias contêm uma única linha, com o objetivo de otimizar correspondências de padrões. As correspondências de padrões em strings que contêm várias linhas de novas linhas podem produzir resultados confusos quando $* é 0 ou indefinido. O padrão é indefinido. (Mnemonic: * corresponde a várias coisas.) Essa variável influencia a interpretação de apenas "^" e "$". Uma nova linha literal pode ser pesquisada mesmo quando "$* == 0".
O uso de $* é descontinuado no Modern Perl, suplantado pelos modificadores "/s" e "/m" na correspondência de padrões.
A atribuição de um valor não numérico a $* aciona um aviso (e faz $* Act se "$* == 0"), ao mesmo tempo que atribui um valor numérico a $* faz que um implícito "int" seja aplicado no valor.