Perl 变量
-
变量
变量是存储值的保留存储位置。这意味着当您创建变量时,会在内存中保留一些空间。解释器根据变量的数据类型分配内存,并确定可以在保留内存中存储的内容。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符串。我们了解到Perl具有以下三种基本数据类型-- 标量
- 数组
- 散列
因此,我们将在Perl中使用三种类型的变量。甲标量变量将通过一个美元符号($)之前和它可以存储一个数字,字符串,或参考。一个数组变量将通过符号@前面,它会存储有序标量的列表。最后,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变量的值。不久,我们将看到如何为数组和散列赋值。 -
标量变量
标量是数据的单个单位。该数据可能是整数,浮点数,字符,字符串,段落或整个网页。简单地说,它可以是任何东西,但只能是一件事。这是一个使用标量变量的简单示例-
尝试一下$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
-
数组变量
数组是存储标量值的有序列表的变量。数组变量前面有一个“@”符号。要引用数组的单个元素,将使用带符号名称的美元符号($),后跟方括号中的元素索引。这是使用数组变量的简单示例-
尝试一下@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";
在这里,我们仅在$符号之前使用转义符号(\)进行打印。其他Perl会将其理解为变量并打印其值。执行后,将产生以下结果-$ages[0] = 25 $ages[1] = 30 $ages[2] = 40 $names[0] = John Paul $names[1] = Lisa $names[2] = Kumar
-
哈希变量
哈希是一组键/值对。哈希变量前面带有百分号(%)。要引用哈希的单个元素,将使用哈希变量名称,后跟与大括号中的值相关联的“键”。这是一个使用哈希变量的简单示例-
尝试一下%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根据上下文(即使用变量的情况)不同地对待同一变量。让我们检查以下示例-
尝试一下@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)中,因此假定上下文是列表上下文,它返回了所有元素。接下来,我们使用相同的数组,并尝试将该数组存储在标量中,因此在这种情况下,假设上下文是标量上下文,它仅返回此数组中的元素数量。下表列出了各种上下文-上下文 描述 标量 给标量变量赋值会评估标量上下文中的右侧。 List 分配给数组或哈希将评估列表上下文中的右侧。 布尔型 布尔上下文只是在其中对表达式求值以查看它是真还是假的任何地方。 Void 该上下文不仅不在乎返回值是什么,甚至不希望返回值。 Interpolative 此上下文仅发生在引号内或类似引号的工作中。