<br><div class="gmail_quote">2008/4/28 Lucas Mateus &lt;<a href="mailto:lucasmateus.oliveira@gmail.com">lucasmateus.oliveira@gmail.com</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<span style="font-family: courier new,monospace;"><div class="Ih2E3d">&gt; Mas mesmo assim isto
parece meio estranho, pois a minha dúvida com relação a este problema é
se vc &gt; não quer que alguém externo as tuas rotinas façam esta alteração,
ou se é as tuas rotinas mesmo (o &gt; que não faz o menor sentido pra mim,
já que neste contexto vc está programando e pode definir que &gt; tipo de
ação cada rotina executará).<br>
<br></div>
Solli, aceite a afirmação: isso é necessário.<br>
</span></blockquote><div><br></div></div><span style="font-family: courier new,monospace;">tudo bem cara, eu aceito a tua afirmação. Só que tem um detalhe nesta história. Vc não está impedindo que alguém altere o teu valor, apenas está alterando a maneira de fazer isto. Se eu eu precisava apenas fazer a atribuição simples &#39;$variavel = valor&#39;, estou tendo que fazer outras &#39;maracutaias&#39; para atualizar o valor.<br>
<br>é difícil dar outra alternativa sem saber extamente o teu problema, mas na minha visão OO poderia ajudar se você definir a &quot;variável&quot; em questão como &#39;Read Only&#39; (utilizando o Class::Accessor) e aí nenhum método da classe poderá alterar o conteúdo. Desta maneira se vc quiser alterar o conteúdo terá se instanciar com outro valor.<br>
<br>Outra alternativa é utilizar o &#39;caller&#39; para restringir realmente quem você quer que tenha acesso de &#39;write&#39; na &#39;propertie&#39;, tipo :<br><br>&lt;code&gt;<br>package AlgumaCoisa;<br>use base qw(Class::Accessor);<br>
<br>__PACKAGE__-&gt;mk_accessors(qw(host));<br><br>sub host {<br>&nbsp; my $self = shift;<br>&nbsp; my $who_is_calling_me = ( caller(1) )[3];<br><br>&nbsp; if (@_) {<br>&nbsp;&nbsp;&nbsp; if ( $who_is_calling_me eq &quot;AlgumaCoisa::pode&quot; ) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $self-&gt;{host} = $_[0];<br>&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; die &quot;Ta louco meu !!!&quot;;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp; }<br><br>&nbsp; return $self-&gt;{host};<br>}<br><br>sub pode {<br>&nbsp; my $self = shift;<br>&nbsp; $self-&gt;host(&#39;troquei&#39;);<br>
}<br><br>sub nao_pode {<br>&nbsp; my $self = shift;<br>&nbsp; $self-&gt;host(&#39;troquei&#39;);<br>}<br><br>1;<br><br>&lt;/code&gt;<br clear="all"></span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Pra mim, o código acima faz mais sentido já que estou limitando qual método tem acesso de gravação. Claro que este cara ainda tem alguns limitantes, mas já dá para ter uma boa idéia sobre o meu questionamento sobre a real utilidade do código que vc está vendo e como estabelecer uma restrição mais consistente.</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Abraços,</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Solli M. Honório</span><br style="font-family: courier new,monospace;">
<br>- -<br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa