O que é um sublinhado duplo em Perl?
-
01-07-2019 - |
Pergunta
Eu estou tentando entender o código Perl de outra pessoa sem saber muito Perl mim. Eu aprecio sua ajuda.
Eu encontrei uma função Perl ao longo destas linhas:
MyFunction($arg1,$arg2__size,$arg3)
Existe um significado à sintaxe duplo sublinhado em $arg2
, ou é apenas parte do nome do segundo argumento?
Solução
Não há nenhuma específica significado para o uso de um __ dentro de um nome de variável perl. É provável preferência programador, especialmente no caso que você citou na sua pergunta. Você pode ver mais informações sobre nomenclatura de variáveis ??perl aqui .
Outras dicas
Como na maioria dos idiomas sublinhado é apenas parte de um identificador; nenhum significado especial.
Mas você tem certeza que do Perl? Não existem sigilos sobre as variáveis. você pode enviar mais contexto?
Tanto quanto o intérprete está em causa, um sublinhado é apenas mais um personagem permitido em identificadores. Ele pode ser usado como uma alternativa para concatenação ou caso camelo para formar identificadores de várias palavras.
Um sublinhado líder é muitas vezes usado para significar um identificador é só para uso local, por exemplo. para partes não-exportado de um módulo. É meramente uma convenção; o intérprete não se importa.
No contexto da sua pergunta, o duplo sublinhado não tem qualquer significado programático. sublinhados duplos significa algo especial para um número limitado de valores em Perl, mais notavelmente __FILE__
& __LINE__
. Estes são literais especiais que não são prefixados com um sigilo ($
, %
ou @
) e só são interpoladas fora de citações. Eles contêm o caminho completo e nome do arquivo atualmente em execução e a linha que está sendo executado. Veja a seção sobre 'literais especiais' em perldata ou este post sobre Perl Monks
Estou bastante certo de arg2__size é apenas o nome de uma variável.
A resposta de Mark é, naturalmente, correto, ele não tem nenhum significado especial.
Mas quero ressaltar que o seu exemplo não se parece com Perl em tudo. variáveis ??Perl não são barewords. Eles têm os sigilos, como você verá a partir dos links acima. E Perl não tem "funções", tem sub-rotinas.
Então, pode haver alguma confusão sobre qual a linguagem que estamos falando.
Você vai precisar de dizer ao intérprete que "$ arg2" é o nome de uma variável. e não "$ arg2__size". Para isso, você precisará usar o parêntese. (Esse uso é semelhante ao observado em shell).
Isso deve funcionar MyFunction ($ arg1, arg2 $ {} __ tamanho, $ arg3)
- Binu