Perl OO & Atributos com Class::Accessor
Publicado por Daniel Vinciguerra (última atualização em 25/04/2016)
[ Hits: 5.349 ]
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;
Exemplo de uso do módulo Term::InKey
Usando sub/method signatures no Perl
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.
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Como instalar o navegador TOR no seu Linux
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Dificuldade em ler binário (15)
Configurar Crontab [RESOLVIDO] (6)
Como substituir pacotes do sistema Linux Mint 21.3 (6)
Configurando static ipv6 em placa de rede eth0[DUVIDA] (4)
excluindo partas e arquivos vazios de pacotes tar[DUVIDA] (1)