[SP-pm] Variavel somente leitura

Gabriel Vieira gabriel.vieira em gmail.com
Segunda Abril 28 09:54:08 PDT 2008


Acho a utilização de OO, uma vez que a implementação é simples, o código
fica mais limpo e a manutenção fica mais fácil. Mas claro que depende do que
você está fazendo. Dentre as soluções, eu indicaria a do Champs e a do Eden,
caberia a você, ao seu código e à sua necessidade a escolha.

[]s

2008/4/28 Lucas Mateus <lucasmateus.oliveira em gmail.com>:

> Bom encontrei outra solução simples com Typeglob. Que acham dessa ?
> Particularmente acho que não carece de OO para essa solução.
>
> use vars qw/$host/;
>
> *host = \'localhost';
>
> print eval { $host = '10.1.1.1' } ?  "O valor de \$host foi alterado\n" :
> "O valor de \$host nao pode ser alterado\n";
> print eval { *host = \'10.1.1.1' } ?  "O valor de \$host foi alterado\n"
> :  "O valor de \$host nao pode ser alterado\n";
>
>
>
> 2008/4/28 Gabriel Vieira <gabriel.vieira em gmail.com>:
>
>  print 'After readwrite: ' . readonly . "\n";
> >
> >
> > On Mon, Apr 28, 2008 at 12:55 PM, Eden Cardim <edencardim em gmail.com>
> > wrote:
> >
> > > 2008/4/28 Lucas Mateus <lucasmateus.oliveira em gmail.com>:
> > > > Achei esse barato aki, o que acham ?
> > > >
> > > >  my $host = 'localhost';
> > > >
> > > >  Internals::SvREADONLY($host => 1);  # lock $host
> > > >  print eval { $host = '10.1.1.1' } ?  "O valor de \$host foi
> > > alterado\n" :
> > > > "O valor de \$host nao pode ser alterado\n";
> > > >
> > > >  Internals::SvREADONLY($host => 0);  # unlock $host
> > > >  print eval { $host = '10.1.1.1' } ?  "O valor de \$host foi
> > > alterado\n" :
> > > > "O valor de \$host nao pode ser alterado\n";
> > >
> > > Que tal usar lvalues?
> > >
> > >    use warnings;
> > >    use strict;
> > >
> > >    my $foo = 'bar';
> > >
> > >    sub readwrite :lvalue { $foo }
> > >
> > >    sub readonly { $foo }
> > >
> > >    print 'Initial value: ' . readonly . "\n";
> > >    eval q{ readonly = 'baz' };
> > >    warn $@ if $@;
> > >    print 'After readonly: ' . readonly . "\n";
> > >    readwrite = 'baz';
> > >    print 'After readwrite: ' . readwrite . "\n";
> > >
> > > Inclusive os erros de escrita proibida são pegos em tempo de
> > > compilação :)
> > >
> > > --
> > > edenc.vox.com
> > > _______________________________________________
> > > SaoPaulo-pm mailing list
> > > SaoPaulo-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> > >
> >
> >
> >
> > --
> > Gabriel Vieira
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Gabriel Vieira
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080428/111ede82/attachment.html 


Mais detalhes sobre a lista de discussão SaoPaulo-pm