5-Perl 变量
1.Perl 变量
变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间。
解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型、浮点型、字符串等。
上一章节中我们已经为大家介绍了Perl的三个基本的数据类型:标量、数组、哈希。
标量 $ 开始, 如$a $b 是两个标量。
数组 @ 开始 , 如 @a @b 是两个数组。
哈希 % 开始 , %a %b 是两个哈希。
Perl 为每个变量类型设置了独立的命令空间,所以不同类型的变量可以使用相同的名称,你不用担心会发生冲突。例如 $foo 和 @foo 是两个不同的变量。
2.创建变量
变量不需要显式声明类型,在变量赋值后,解释器会自动分配匹配的类型空间。
变量使用等号(=)来赋值。
我们可以在程序中使用 use strict 语句让所有变量需要强制声明类型。
等号左边为变量,右边为值,实例如下:
$age = 25; # 整型
$name = "abc"; # 字符串
$salary = 1445.50; # 浮点数
以上代码中 25, "abc" 和 1445.50 分别赋值给 $age, $name 和 $salary 变量。
3.标量变量
标量是一个单一的数据单元。 数据可以是整数,浮点数,字符,字符串,段落等。
简单的说它可以是任何东西。以下是标量的简单应用:
实例
#!/usr/bin/perl
$age = 25; # 整型
$name = "abc"; # 字符串
$salary = 1445.50; # 浮点数
print "Age = $age\n";
print "Name = $name\n";
print "Salary = $salary\n";
4.数组变量
数组是用于存储一个有序的标量值的变量。
数组 @ 开始。
要访问数组的变量,可以使用美元符号($)+变量名+[下标] 来访问,实例如下所示:
实例
#!/usr/bin/perl
@ages = (25, 30, 40);
@names = ("google", "abc", "taobao");
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";
程序中我们在 $ 标记前使用了转义字符 (\) ,这样才能输出字符 $。
5.哈希变量
哈希是一个 key/value 对的集合。
哈希 % 开始。
如果要访问哈希值,可以使用 $ +变量名+ {key} 格式来访问:
实例
#!/usr/bin/perl
%data = ('google', 45, 'abc', 30, 'taobao', 40);
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'abc'} = $data{'abc'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
6.变量上下文
所谓上下文:指的是表达式所在的位置。
上下文是由等号左边的变量类型决定的,等号左边是标量,则是标量上下文,等号左边是列表,则是列表上下文。
Perl 解释器会根据上下文来决定变量的类型。
实例
#!/usr/bin/perl
@names = ('google', 'abc', 'taobao');
@copy = @names; # 复制数组
$size = @names; # 数组赋值给标量,返回数组元素个数
print "名字为 : @copy\n";
print "名字数为 : $size\n";
以上程序执行输出结果为:
名字为 : google abc taobao
名字数为 : 3
代码中 @names 是一个数组,它应用在了两个不同的上下文中。
第一个将其复制给另外一个数组,所以它输出了数组的所有元素。
第二个我们将数组赋值给一个标量,它返回了数组的元素个数。
以下列出了多种不同的上下文:
标量 - 赋值给一个标量变量,在标量上下文的右侧计算
列表 - 赋值给一个数组或哈希,在列表上下文的右侧计算。
布尔 - 布尔上下文是一个简单的表达式计算,查看是否为 true 或 false。
Void - 这种上下文不需要关系返回什么值,一般不需要返回值。
插值 - 这种上下文只发生在引号内。
5-Perl 变量的更多相关文章
- Perl 变量:标量变量、数组变量、哈希变量和变量上下文
一.Perl 变量变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间.解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型.浮点型.字符串等.上一章 ...
- Perl 变量
Perl 变量 变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间. 解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型.浮点型.字符串等. 上一 ...
- Perl 变量:哈希变量
Perl 哈希变量哈希是 key/value 对的集合.Perl中哈希变量以百分号 (%) 标记开始.访问哈希元素格式:${key}. 1.创建哈希创建哈希可以通过以下两种方式: 1.为每个 key ...
- Perl 变量:数组变量
Perl 数组Perl 数组一个是存储标量值的列表变量,变量可以是不同类型.数组变量以 @ 开头.访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取. 1.创建列表.数组1.数组变量以 @ ...
- perl 变量 $/ 的用法解析
默认状态下,很显然都是用\n来区分行,\n也被我们称作为换行符.当读取序列时,按行来读取时,就是以换行符为标准. perl中"行"的概念就由$/决定. { $data = &quo ...
- perl 变量详解
http://www.perlmonks.org/?node_id=933450 use strict; use Devel::Peek; my $a; Dump($a); $a=4; Dump($a ...
- 【转】perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行
默认状态下,很显然都是用\n来区分行,\n也被我们称作为换行符. 当读取序列时,按行来读取时,就是以换行符为标准. 读取的strawberry1.gb的文件内容如下: LOCUS JX118024 4 ...
- Perl 变量:标量变量
Perl 标量标量是一个简单的数据单元.标量可以是一个整数,浮点数,字符,字符串,段落或者一个完整的网页. 1.数字标量标量通常是一个数字或字符串. 2.字符串标量以下实例演示了不同类型的字符串标量的 ...
- perl选项、特殊变量、一些函数参考手册
perl一行式程序系列文章:Perl一行式 本文用来收集Perl一行式中涉及到的一些选项.特殊变量的说明,可以用来做速查手册. 本文会逐渐更新. 第一次学Perl一行式时,请直接忽略本文内容,并直接从 ...
- perl 数组变量(Array) 转载
Perl 变量(2)--数组 原文地址:Perl 变量(2)--数组 作者:飞鸿无痕 二.数组 数组是标量数据的有序列表. 数组可以含任意多个元素.最小的数组可以不含元素,而最大的数组可以占满全部可用 ...
随机推荐
- MySQL 中<=>用法(长知识)
https://www.runoob.com/mysql/mysql-operator.html MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下 ...
- Ceph 存储集群搭建
前言 Ceph 分布式存储系统,在企业中应用面较广 初步了解并学会使用很有必要 一.简介 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统.它具有高可靠性.安装方便.管理简便.能够 ...
- 前端知识点回顾——Javascript篇(四)
Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...
- 发布机制-灰度发布-例子:Windows
ylbtech-发布机制-灰度发布-例子:Windows 在传统软件产品发布过程中(例如微软的Windows 7的发布过程中),一般都会经历Pre-Alpha.Alpha.Beta.Release c ...
- linux下编译安装ACE-6.4.2(adpative communication environment)
1.环境 CentOS-6.5-x86_64-bin-DVD1.iso VMware_workstation_full_12.5.2 (2).exe ACE-6.4.2.tar.gz 下载链接:htt ...
- [spring]@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...
- Mac 配置vscode调试PHP
Mac系统版本:MacOS Mojave 10.14.5 vscode:1.36.0 MacOS Mojave 10.14.5 系统自带 PHP 7.1.23 1.开启php sudo vim / ...
- 微服务的脚手架Jhipster使用(一)
随着微服务的普及以及docker容器的广泛应用,有传统的soa服务衍生出微服务的概念,微服务强调的是服务的独立性,屏蔽底层物理平台的差异,此时你会发现微服务跟容器技术完美契合.在此基础上衍生出的云原生 ...
- 解决DBGridEh遍历记录后不移动当前行位置的方法
解决DBGridEh遍历记录后不移动当前行位置的方法 在用DBGridEh配合ClientDataSet使用时,需要知道用户选择了哪些记录,可用遍历记录的方法查询选择列是否为真,但在这之后,Clien ...
- WMPageController设置menuView的左右视图
效果图如下: 绿色的是自定义的emenuView的rightView哟!!! 代码实现如下: // // CategoryVC.m // JSHui // // Created by Apple on ...