Perl - escalares

Um escalar é uma única unidade de dados. Esses dados podem ser um número inteiro, ponto flutuante, um caractere, uma string, um parágrafo ou uma página da web inteira.

Aqui está um exemplo simples de uso de variáveis ​​escalares -

#!/usr/bin/perl

$age = 25;             # An integer assignment
$name = "John Paul";   # A string 
$salary = 1445.50;     # A floating point

print "Age = $age\n";
print "Name = $name\n";
print "Salary = $salary\n";

Isso produzirá o seguinte resultado -

Age = 25
Name = John Paul
Salary = 1445.5

Escalares Numéricos

Um escalar é geralmente um número ou uma string. O exemplo a seguir demonstra o uso de vários tipos de escalares numéricos -

#!/usr/bin/perl

$integer = 200;
$negative = -300;
$floating = 200.340;
$bigfloat = -1.2E-23;

# 377 octal, same as 255 decimal
$octal = 0377;

# FF hex, also 255 decimal
$hexa = 0xff;

print "integer = $integer\n";
print "negative = $negative\n";
print "floating = $floating\n";
print "bigfloat = $bigfloat\n";
print "octal = $octal\n";
print "hexa = $hexa\n";

Isso produzirá o seguinte resultado -

integer = 200
negative = -300
floating = 200.34
bigfloat = -1.2e-23
octal = 255
hexa = 255

Escalares de corda

O exemplo a seguir demonstra o uso de vários tipos de escalares de string. Observe a diferença entre strings entre aspas simples e strings entre aspas duplas -

#!/usr/bin/perl

$var = "This is string scalar!";
$quote = 'I m inside single quote - $var';
$double = "This is inside single quote - $var";

$escape = "This example of escape -\tHello, World!";

print "var = $var\n";
print "quote = $quote\n";
print "double = $double\n";
print "escape = $escape\n";

Isso produzirá o seguinte resultado -

var = This is string scalar!
quote = I m inside single quote - $var
double = This is inside single quote - This is string scalar!
escape = This example of escape -       Hello, World

Operações Escalares

Você verá um detalhe de vários operadores disponíveis em Perl em um capítulo separado, mas aqui vamos listar algumas operações numéricas e de string.

#!/usr/bin/perl

$str = "hello" . "world";       # Concatenates strings.
$num = 5 + 10;                  # adds two numbers.
$mul = 4 * 5;                   # multiplies two numbers.
$mix = $str . $num;             # concatenates string and number.

print "str = $str\n";
print "num = $num\n";
print "mul = $mul\n";
print "mix = $mix\n";

Isso produzirá o seguinte resultado -

str = helloworld
num = 15
mul = 20
mix = helloworld15

Multiline Strings

Se você quiser introduzir strings de várias linhas em seus programas, você pode usar as aspas simples padrão conforme abaixo -

#!/usr/bin/perl

$string = 'This is
a multiline
string';

print "$string\n";

Isso produzirá o seguinte resultado -

This is
a multiline
string

Você pode usar a sintaxe do documento "aqui" também para armazenar ou imprimir multilinhas como abaixo -

#!/usr/bin/perl

print <<EOF;
This is
a multiline
string
EOF

Isso também produzirá o mesmo resultado -

This is
a multiline
string

V-Strings

Um literal no formato v1.20.300.4000 é analisado como uma string composta de caracteres com os ordinais especificados. Esta forma é conhecida como v-strings.

Uma v-string fornece uma maneira alternativa e mais legível de construir strings, em vez de usar a forma de interpolação um pouco menos legível "\ x {1} \ x {14} \ x {12c} \ x {fa0}".

Eles são qualquer literal que comece com av e seja seguido por um ou mais elementos separados por pontos. Por exemplo -

#!/usr/bin/perl

$smile  = v9786;
$foo    = v102.111.111;
$martin = v77.97.114.116.105.110; 

print "smile = $smile\n";
print "foo = $foo\n";
print "martin = $martin\n";

Isso também produzirá o mesmo resultado -

smile = ☺
foo = foo
martin = Martin
Wide character in print at main.pl line 7.

Literais Especiais

Até agora, você deve ter uma ideia sobre os escalares de string e sua operação de concatenação e interpolação. Então, deixe-me falar sobre três literais especiais __FILE__, __LINE__ e __PACKAGE__ representam o nome do arquivo atual, o número da linha e o nome do pacote naquele ponto do seu programa.

Eles podem ser usados ​​apenas como tokens separados e não serão interpolados em strings. Verifique o exemplo abaixo -

#!/usr/bin/perl

print "File name ". __FILE__ . "\n";
print "Line Number " . __LINE__ ."\n";
print "Package " . __PACKAGE__ ."\n";

# they can not be interpolated
print "__FILE__ __LINE__ __PACKAGE__\n";

Isso produzirá o seguinte resultado -

File name hello.pl
Line Number 4
Package main
__FILE__ __LINE__ __PACKAGE__