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: 2.848 ]

Homepage: http://bivee.com.br

Download 6393.scalars.pl




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

  



Esconder código-fonte

#!/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};
}


Scripts recomendados

Cálculo do MDC em Perl para quantidade ilimitada de parâmetros

Calculando a média entre dois valores

localtime.pl

Simples Contador

Gerando senhas aleatórias


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts