Scalar - Alguns dos usos mais comuns deste tipo de variável do Perl
Publicado por Daniel Vinciguerra (última atualização em 29/03/2016)
[ Hits: 3.116 ]
Homepage: http://bivee.com.br
Perl possui alguns tipos de variáveis muito interessantes cujos principais são representados por $ para scalares, @ para arrays e % para arrays associativos ou hashtables. O tipo mais versátil da lista acima na minha opinião é o Scalar.
A variável Scalar no Perl pode assumir valores unitarios como referencias de outros tipos, filehandles, objetos, etc...
EXEMPLO DE SCALAR:
my $string = 'Isso é uma Scalar em Perl';
Esta Scalar, no contexto acima, esta sendo utilizada como string mais a verdade é que ela pode assumir diversos outros tipos de valores como veremos neste script abaixo.
PRÉ-REQUISITOS
- perl 5.10 ou superior
REFERÊNCIAS
http://perldoc.perl.org/perlintro.html#Perl-variable-types
http://perldoc.perl.org/perlref.html
EXECUTANDO
$ DEBUG=1 perl scalars.pl
#!/usr/bin/env perl
# 2016 (c) Daniel Vinciguerra
# pragmas
use 5.10.0;
use strict;
use warnings;
# imports
use Data::Dumper;
# declaração de uma scalar
my $scalar;
logger("Declaração da scalar sem valor", $scalar);
# scalar como string
$scalar = 'Viva O Linux';
logger("Scalar como string", $scalar);
# scalar como int
$scalar = 2016;
logger("Scalar como int", $scalar);
# setando scalar como undef
undef $scalar;
logger("Scalar como undef", $scalar);
# scalar como file handle (manipulação de arquivos/diretórios)
open $scalar, '>', 'file.tmp' or die "Error: $!";
logger("Scalar como filehandle (". ref($scalar) .")", $scalar);
close $scalar;
# scalar como um arrayref
my @array = ('Vermelho', 'Azul', 'Preto', 'Amarelo', 'Branco');
$scalar = \@array;
# ABREVIAÇÂO: $scalar = ['Vermelho', 'Azul', 'Preto', 'Amarelo', 'Branco'];
logger("Scalar como arrayref (". ref($scalar) .")", $scalar);
# scalar como um hashref
my %hash = (
nome => 'João Ferreira',
idade => 20,
cores_favoritas => ['Verde', 'Preto', 'Amarelo']
);
$scalar = \%hash;
# ABREVIAÇÃO: $scalar = { nome => 'João Ferreira', idade => 20, cores_favoritas => [...] };
logger("Scalar como hashref (". ref($scalar) .")", $scalar);
# scalar como um coderef (referencia de função anonima)
$scalar = sub { say "Isso é um coderef em Perl" };
logger("Scalar como coderef (". ref($scalar) .")", $scalar);
# scalar como um objeto
# bless [data_struct], [class_name]
$scalar = bless { nome => 'João Ferreira', idade => 20 }, 'Pessoa';
logger("Scalar como um objeto (". ref($scalar) .")", $scalar);
#####################################
## sub log para verbosidade
#####################################
sub logger {
my ($message, $var) = @_;
say sprintf("DEBUG: %s \n%s\n\n", $message, Dumper($var))
if $ENV{DEBUG};
}
Cálculo de área de uma figura geométrica
Aprendendo a fazer equações em Perl
Renomeando arquivos de forma padronizada
Nenhum comentário foi encontrado.
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Instalação do K3s Single-Node com Rancher no Ubuntu 24.04
Usei o NotebookLM para Auditar Logs do Linux
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
Samba 4 AD-DC 2026: Como instalar e configurar um Active Directory (via APT-GET)
[Resolvido] Sumiço de redes e micro quedas no iwd/iwgtk (Realtek rtw88)
Como Configurar DNS Reverso (PTR) em Ambientes Linux e Microsoft
Preparando o Ambiente para Administrar o Samba 4 a partir do Windows com RSAT
Problema ao instalar Linux Mint. (1)
Midia de instalação LM-21.3 não inicializa (11)
A diferença entre a fala de um Samuel e a fala de alguém que conhece o... (9)









