[SP-pm] Variavel somente leitura

Eden Cardim edencardim em gmail.com
Segunda Abril 28 08:55:09 PDT 2008


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


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