Perl OO & Atributos com Class::Accessor
Publicado por Daniel Vinciguerra (última atualização em 25/04/2016)
[ Hits: 5.666 ]
Homepage: http://bivee.com.br
Download class-accessors.pl (versão 2)
O intuito deste script foi mostrar como pode ser fácil criar classes com atributos e accessors através do Class::Accessor.
OBSERVAÇÂO:
Este script depende do módulo Class::Accessor... para instalar o mesmo segue o comando:
$ sudo perl -MCPAN -e "install Class::Accessor"
PERL DOC Class::Accessor:
http://search.cpan.org/~kasei/Class-Accessor-0.34/lib/Class/Accessor.pm
Versão 2 - Enviado por Daniel Vinciguerra em 03/04/2016
Changelog: Accessors em Perl são equivalentes aos métodos getters e setters do Java e do .Net e são utilizados para fazer o encapsulamento dos atributos da nossa classe.
Eles também permitem que utilizemos uma interface mais "amigável" na hora de acessar os atributos:
Ex.:  
Acesso Direto 
GET: $self->{nome}
SET: $self->{idade} = 12
Usando Accessor
GET: $self->nome() ou $self->nome
SET: $self->idade(12)
CHANGES:
- Tradução do script
- Melhoria nos comentários.
- "Modernização" da sintaxe
PRÉ-REQUISITOS
- perl 5.10 ou superior (para utilizar o say)
REFERÊNCIAS
https://metacpan.org/pod/Class::Accessor
EXECUTANDO
$ perl class-accessors.pl
#!/usr/bin/perl -w
# (c) 2011 Bivee. All rights reserveds.
# author dvicniguerra < dan.vinciguerra at gmail.com >
#
# This script is distributed under Perl Itself License
# declaring Pessoa class
package Pessoa;
# This module provide a constructor and att declarations
# like Moose this way.
use Class::Accessor "antlers";
# nome attribute
has nome => ( 
    is => "rw", 
    isa => "Str" 
);
# email attribute
has email => ( 
    is => "rw", 
    isa => "Str" 
);
# idade attribute
has idade => ( 
    is => "rw", 
    isa => "Num" 
);
# meet method show some info about Pessoa object
sub meeting_you {
    my $self = shift;
    print "Hi " . $self->nome . ", you have " . $self->idade . " years old and your email is " . $self->email;
}
# now we can call the class
package main;
# getting a new pessoa object
my $p = Pessoa->new({ 
    nome => 'Daniel Vinciguerra', 
    idade => 23, 
    email => 'daniel.vinciguerra@test.com'
});
# calling meeting_you method from Pessoa object
$p->meeting_you;
Usando sub/method signatures no Perl
Exemplo de uso do módulo Term::InKey
Separando seu código em módulos no Perl
Calculo de valor futuro - regrassão linear
Adicionar conta de e-mail - Postfix com domínios virtuais no MySQL
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (36)
Instalação dualboot Windows 11 e Debian 13 (0)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









