print 'After readwrite: ' . readonly . "\n";<br><br><div class="gmail_quote">On Mon, Apr 28, 2008 at 12:55 PM, Eden Cardim <<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">2008/4/28 Lucas Mateus <<a href="mailto:lucasmateus.oliveira@gmail.com">lucasmateus.oliveira@gmail.com</a>>:<br>
</div><div class="Ih2E3d">> Achei esse barato aki, o que acham ?<br>
><br>
> my $host = 'localhost';<br>
><br>
> Internals::SvREADONLY($host => 1); # lock $host<br>
> print eval { $host = '<a href="http://10.1.1.1" target="_blank">10.1.1.1</a>' } ? "O valor de \$host foi alterado\n" :<br>
> "O valor de \$host nao pode ser alterado\n";<br>
><br>
> Internals::SvREADONLY($host => 0); # unlock $host<br>
> print eval { $host = '<a href="http://10.1.1.1" target="_blank">10.1.1.1</a>' } ? "O valor de \$host foi alterado\n" :<br>
> "O valor de \$host nao pode ser alterado\n";<br>
<br>
</div>Que tal usar lvalues?<br>
<br>
use warnings;<br>
use strict;<br>
<br>
my $foo = 'bar';<br>
<br>
sub readwrite :lvalue { $foo }<br>
<br>
sub readonly { $foo }<br>
<br>
print 'Initial value: ' . readonly . "\n";<br>
eval q{ readonly = 'baz' };<br>
warn $@ if $@;<br>
print 'After readonly: ' . readonly . "\n";<br>
readwrite = 'baz';<br>
print 'After readwrite: ' . readwrite . "\n";<br>
<br>
Inclusive os erros de escrita proibida são pegos em tempo de compilação :)<br>
<font color="#888888"><br>
--<br>
<a href="http://edenc.vox.com" target="_blank">edenc.vox.com</a><br>
</font><div><div></div><div class="Wj3C7c">_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Gabriel Vieira