- Perl 基础知识
- Perl - 主页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子例程
- Perl - 参考资料
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码标准
- Perl - 正则表达式
- Perl - 发送电子邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 流程管理
- Perl - 嵌入式文档
- Perl - 函数参考
- Perl 有用资源
- Perl - 问题与解答
- Perl - 快速指南
- Perl - 有用的资源
- Perl - 讨论
Perl - 变量
变量是用于存储值的保留内存位置。这意味着当您创建变量时,您会在内存中保留一些空间。
根据变量的数据类型,解释器分配内存并决定可以在保留内存中存储什么。因此,通过为变量分配不同的数据类型,您可以在这些变量中存储整数、小数或字符串。
我们了解到 Perl 具有以下三种基本数据类型 -
- 标量
- 数组
- 哈希值
因此,我们将在 Perl 中使用三种类型的变量。标量变量前面有一个美元符号 ($),它可以存储数字、字符串或引用。数组变量前面带有@符号,它将存储有序的标量列表。最后,哈希变量前面会带有符号 %,并将用于存储键/值对集。
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";
这里我们在 $ 符号之前使用转义符号 (\) 只是为了打印它。其他 Perl 会将其理解为变量并打印其值。执行时,将产生以下结果 -
$ages[0] = 25 $ages[1] = 30 $ages[2] = 40 $names[0] = John Paul $names[1] = Lisa $names[2] = Kumar
哈希变量
哈希是一组键/值对。哈希变量前面有一个百分号 (%)。要引用哈希的单个元素,您将使用哈希变量名称,后跟与大括号中的值关联的“键”。
这是使用哈希变量的简单示例 -
#!/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 根据上下文(即使用变量的情况)对同一变量进行不同的处理。让我们检查以下示例 -
#!/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是一个数组,它已在两个不同的上下文中使用。首先,我们将其复制到任何其他数组(即列表)中,因此假设上下文是列表上下文,它会返回所有元素。接下来,我们使用相同的数组并尝试将此数组存储在标量中,因此在本例中,假设上下文是标量上下文,它仅返回此数组中的元素数量。下表列出了各种上下文 -
先生。 | 上下文和描述 |
---|---|
1 | 标量 对标量变量的赋值会计算标量上下文中的右侧。 |
2 | 列表 对数组或散列的赋值会计算列表上下文中的右侧。 |
3 | 布尔值 布尔上下文就是对表达式进行求值以确定它是真还是假的任何地方。 |
4 | 空白 这个上下文不仅不关心返回值是什么,它甚至不需要返回值。 |
5 | 插值法 这种上下文仅发生在引号内,或者像引号一样工作的东西。 |