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.069 ]
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};
}
Separa os dígitos de um número
check_mem.pl - Plugin Nagios para checar consumo de RAM
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Instalando partes faltantes do Plasma 6
Como ler fonte de um projeto? (3)
Instalar Dual Boot, Linux+Windows. (2)









