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.847 ]

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

Lista de números aleatórios não-repetidos de um intervalo em Perl

"Codificação" de texto em Perl

Data por extenso

Programa que separa os dígitos de um inteiro

impares e pares


  

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