Pergunta

Eu sou macaco remendar um pacote usando uma técnica dada no início do " Como posso macaco-patch um método de instância em Perl? ". O problema que eu estou correndo em é que a sub-rotina original usado uma variável my de nível pacote que a sub-rotina remendado parece não ter acesso, quer através de especificação caminho completo ou uso implícito.

Existe alguma maneira de obter os dados com escopo desta forma para uso na rotina remendado?

Foi útil?

Solução

Você pode obter lexicals com a PadWalker módulo. Mal, mas funciona.

Outras dicas

No. A coisa que você está no equivocada é que eles são não pacote escopo. Uma variável lexical é, por definição, limitada ao âmbito lexical, em outras palavras, o bloco está em.

Lexicals (ie: declarado com 'meu') não são visíveis fora do âmbito lexical (arquivo ou bloco), no qual eles são declarados. Esse é o ponto de variáveis ??lexicais.

Se houver um sub-rotina / método que está no mesmo âmbito que o var lexical, em seguida, ele pode retornar o valor da lexical e que pode permitir o acesso indireto ao var de fora do seu âmbito.

Não existe tal coisa como uma "especificação de caminho completo para as variáveis ??lexicais. Isso é para variáveis ??de pacote. Se o var foi declarado com 'nosso' em vez de 'meu' você poderia fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top