当前位置: 首页 > 文档资料 > Perl 入门教程 >

变量

优质
小牛编辑
126浏览
2023-12-01

变量是用于存储值的保留存储器位置。 这意味着当您创建变量时,您在内存中保留了一些空间。

根据变量的数据类型,解释器分配内存并决定可以存储在保留内存中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符串。

我们了解到Perl具有以下三种基本数据类型 -

  • Scalars
  • Arrays
  • Hashes

因此,我们将在Perl中使用三种类型的变量。 scalar变量将以美元符号($)开头,它可以存储数字,字符串或引用。 array变量将以符号@开头,它将存储有序的标量列表。 最后, Hash变量将以符号%开头,并将用于存储键/值对的集合。

Perl将每个变量类型保存在单独的命名空间中。 因此,您可以在不担心冲突的情况下,为标量变量,数组或散列使用相同的名称。 这意味着$ foo和@foo是两个不同的变量。

创建变量

不必显式声明Perl变量来保留内存空间。 为变量赋值时,声明会自动发生。 等号(=)用于为变量赋值。

请注意,如果我们在程序中使用use strict语句,则必须在使用之前声明变量。

=运算符左边的操作数是变量的名称,=运算符右边的操作数是存储在变量中的值。 例如 -

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

这里25,“John Paul”和1445.50分别是分配给$age$name$salary变量的值。 不久我们将看到如何为数组和散列分配值。

标量变量

标量是单个数据单位。 该数据可以是整数,浮点数,字符,字符串,段落或整个网页。 简单地说它可以是任何东西,但只是一件事。

这是一个使用标量变量的简单示例 -

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

这将产生以下结果 -

Age = 25
Name = John Paul
Salary = 1445.5

数组变量

数组是存储标量值的有序列表的变量。 数组变量前面有“at”(@)符号。 要引用数组的单个元素,您将使用带有变量名的美元符号($),后跟方括号中元素的索引。

这是一个使用数组变量的简单示例 -

#!/usr/bin/perl
@ages = (25, 30, 40);             
@names = ("John Paul", "Lisa", "Kumar");
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";

这里我们在$ sign之前使用了escape符号(\)来打印它。 其他Perl会将其理解为变量并将其打印出来。 执行时,这将产生以下结果 -

$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = John Paul
$names[1] = Lisa
$names[2] = Kumar

哈希变量

散列是一组key/value对。 哈希变量前面有百分号(%)符号。 要引用哈希的单个元素,您将使用哈希变量名称,后跟与大括号中的值关联的“键”。

这是一个使用哈希变量的简单示例 -

#!/usr/bin/perl
%data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);
print "\$data{'John Paul'} = $data{'John Paul'}\n";
print "\$data{'Lisa'} = $data{'Lisa'}\n";
print "\$data{'Kumar'} = $data{'Kumar'}\n";

这将产生以下结果 -

$data{'John Paul'} = 45
$data{'Lisa'} = 30
$data{'Kumar'} = 40

变量上下文

Perl基于Context不同地处理相同的变量,即使用变量的情况。 我们来看看下面的例子 -

#!/usr/bin/perl
@names = ('John Paul', 'Lisa', 'Kumar');
@copy = @names;
$size = @names;
print "Given names are : @copy\n";
print "Number of names are : $size\n";

这将产生以下结果 -

Given names are : John Paul Lisa Kumar
Number of names are : 3

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

Sr.No.上下文和描述
1

Scalar

对标量变量的赋值评估标量上下文中的右侧。

2

List

对数组或散列的赋值评估列表上下文中的右侧。

3

Boolean

布尔上下文只是评估表达式以查看它是真还是假的任何位置。

4

Void

这个上下文不仅不关心返回值是什么,它甚至不想要返回值。

5

Interpolative

此上下文仅发生在引号内,或者与引号类似的内容。