📜  珀尔 |变量及其类型

📅  最后修改于: 2022-05-13 01:55:43.318000             🧑  作者: Mango

珀尔 |变量及其类型

用于存储值的保留内存位置是变量。这意味着创建一个变量,在内存中保留一个空间。变量的数据类型有助于解释器分配内存并决定在保留内存中存储什么。因此,变量可以存储整数、小数或字符串,并为变量分配不同的数据类型。
Perl 具有以下三种基本数据类型,即 -

  • 标量
  • 数组
  • 哈希

因此,在 Perl 中将使用三种类型的变量。标量变量可以存储数字、字符串或引用,并且前面有一个美元符号 ($)。数组变量将存储标量的有序列表并以 @ 符号开头。 Hash 变量将用于存储键/值对集合,并以符号 % 开头。

创建变量

Perl 变量不需要显式声明来保留内存空间。就像其他编程语言一样,'='运算符左边的操作数基本上是变量的名称,而'='运算符右边的操作数基本上是存储在变量中的值。
例如:

标量变量

标量是单个数据单元。数据可能是整数、浮点数、字符、字符串、段落或整个网页。这是使用标量变量的示例

Perl
#!/usr/bin/perl
 
# Assigning values to scalar
# variables
$age = 40;    
$name = "XYZ";
$rollno = 22;
 
# Printing variable values
print "Age = $age\n";
print "Name = $name\n";
print "Roll no = $rollno\n";


Perl
#!/usr/bin/perl
 
# Assigning values to Array variables
@ages = (55, 80, 44);    # @ is used to declare
                        # array variables    
@names = ("XYZ", "LGH", "KMR");
 
# Printing values of Arrays
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";


Perl
#!/usr/bin/perl
 
# Defining Hash variable using '%'
%data = ('XYZ', 55, 'LGH', 80, 'KMR', 44);
 
# Printing values of Hash variables
print "\$data{'XYZ'} = $data{'XYZ'}\n";
print "\$data{'LGH'} = $data{'LGH'}\n";
print "\$data{'KMR'} = $data{'KMR'}\n";


Perl
#!/usr/bin/perl
 
# Defining Array variable
@names = ('XYZ', 'LGH', 'KMR');
 
# Assigning values of array variable
# to another array variable
@copy = @names;
 
# Assigning values of Array variable
# to a scalar variable
$size = @names;
 
# Printing the values of new variables.
print "Given names are : @copy\n";
print "Number of names are : $size\n";


输出:

Age = 40
Name = XYZ
Roll no = 22 
数组变量

存储标量值的有序列表的变量是数组类型。数组数据类型的变量前面有一个“at”(@) 符号。美元符号 ($) 用于引用数组的单个元素,变量名称后跟方括号中元素的索引。
以下是如何使用数组变量的示例:

Perl

#!/usr/bin/perl
 
# Assigning values to Array variables
@ages = (55, 80, 44);    # @ is used to declare
                        # array variables    
@names = ("XYZ", "LGH", "KMR");
 
# Printing values of Arrays
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";

在这里,我们在 '$' 符号之前使用了 '\' 只是为了将其打印为语句。否则 Perl 将默认将其理解为变量并打印存储在其中的值。执行时,将产生以下结果 -
输出:

$ages[0] = 55
$ages[1] = 80
$ages[2] = 44
$names[0] = XYZ
$names[1] = LGH
$names[2] = KMR 
哈希变量

哈希是一组键/值对。 Hash 类型的变量前面有一个模数 (%) 符号。键用于引用哈希中的单个变量。要访问这些元素,在大括号中使用散列变量名称后跟与值关联的键。
以下是显示哈希变量的简单示例:

Perl

#!/usr/bin/perl
 
# Defining Hash variable using '%'
%data = ('XYZ', 55, 'LGH', 80, 'KMR', 44);
 
# Printing values of Hash variables
print "\$data{'XYZ'} = $data{'XYZ'}\n";
print "\$data{'LGH'} = $data{'LGH'}\n";
print "\$data{'KMR'} = $data{'KMR'}\n";

输出:

$data{'XYZ'} = 55
$data{'LGH'} = 80
$data{'KMR'} = 44 
变量上下文

基于上下文,Perl 以不同的方式处理相同的变量,即使用变量的情况。
例子:

Perl

#!/usr/bin/perl
 
# Defining Array variable
@names = ('XYZ', 'LGH', 'KMR');
 
# Assigning values of array variable
# to another array variable
@copy = @names;
 
# Assigning values of Array variable
# to a scalar variable
$size = @names;
 
# Printing the values of new variables.
print "Given names are : @copy\n";
print "Number of names are : $size\n";

输出:

Given names are : XYZ LGH KMR
Number of names are : 3

这里@names 是一个数组,它已在两种不同的上下文中使用。首先,我们将它复制到任何其他数组中,即列表,因此它返回所有元素,假设上下文是列表上下文。接下来,尝试将相同的数组存储在标量中,假设它是标量上下文,则默认情况下它仅返回该数组中元素的数量。下表显示了各种上下文:

S no.Context & Description
1.Scalar 
Assignment to a scalar variable evaluates the value on the right of ‘=’ in a scalar context. 
 
2.List 
Assignment to an array or a hash evaluates the right of ‘=’ in a list context. 
 
3.Boolean 
A boolean context is simply a place where expression is evaluated just to check whether it is true or false. 
 
4.Void 
This context doesn’t care what the return value is, even it doesn’t want a return value. 
 
5.Interpolative 
This context will only arise inside the quotes (“”), or with things that behave like quotes(“”).