Perl OO & Atributos com Class::Accessor
Publicado por Daniel Vinciguerra (última atualização em 25/04/2016)
[ Hits: 5.453 ]
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;
Separando seu código em módulos no Perl
Exemplo de uso do módulo Term::InKey
Usando sub/method signatures no Perl
Calculo de valor futuro - regrassão linear
Orientação a Objetos - Criando e usando uma classe em Perl
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (3)
Instalação Uefi com o instalador clássico do Mageia (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta