<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body>
Oi Flávio,<br><br>Comentários abaixo...<br><br>&gt; Date: Wed, 20 Jun 2007 13:15:37 -0300<br>&gt; From: fglock@gmail.com<br>&gt;<br>&gt; Por exemplo, quando o compilador encontra um BEGIN:<br>&gt; <br>&gt;  {<br>&gt;   my $a = 1;<br>&gt;   BEGIN { $a = $a + 1 }<br>&gt;  }<br>&gt; <br>&gt; Para executar o BEGIN (o BEGIN executa durante a compilação), é necessário:<br>&gt; <br>&gt; - criar uma closure para armazenar a variável $a;<br>&gt; - criar uma outra closure dentro desta, para armazenar a soma e atribuição;<br>&gt; - executar o BEGIN - dentro do ambiente em que foi criado;<br>&gt; - quando o BEGIN termina de executar, todas as alterações que o BEGIN<br>&gt; tenha feito em quaisquer variáveis devem ser registradas - aqui é um<br>&gt; dos lugares em que a introspecção é necessária.<br><br>Seu exemplo é bem simples, talvez não seja o melhor para mostrar o que você precisa. Eu pensei, para esse caso, que você simplesmente poderia usar uma variável global.<br><br>&gt; Não, a tabela de símbolos só serve para variáveis globais.<br>&gt; As variáveis "my" são guardadas em uma estrutura diferente.<br><br>Então... qual o problema de, dentro do bloco BEGIN, computar o necessário e manipular a tabela de símbolos para armazenar esse resultado numa variável global?<br><br>Talvez eu esteja perguntando demais, mas com esse exemplo que você deu eu não consigo imaginar a necessidade de torcer o programa para pegar o valor da variável léxica.<br><br>[]'s<br>Alceu<br><br /><hr />Make every IM count. Download Windows Live Messenger and join the i'm Initiative now. It's free.   <a href='http://im.live.com/messenger/im/home/?source=TAGWL_June07' target='_new'>Make it count!</a></body>
</html>