文档章节

perl学习笔记-----------------------(11)

henni_719
 henni_719
发布于 2017/04/22 17:13
字数 1955
阅读 8
收藏 0
标量存储单一的数据项,表包含多个数据项。标量是实际的数据类型,perl没有表这样的数据类型。标量和表的差异是一种工作环境而非数据类型。Perl知道你当前是工作在标量环境还是表上下文。例如,如果代码在表上下文中使用了函数或运算符,就可能将它的返回值赋给表;如果函数是在标量环境中使用的,Perl就知道你需要标量数据项。表与标量不同的是,在perl中并不能得到实际的表数据类型。也就输说,没有什么存储类型的名字叫表。在编程代码让它一次同时处理多个数据项时,就是在使用表,使用表语法。例如,给标量分配数据可能就像这样:$x=1; 而给表赋值可能像这样:($x,$y)=(1,2);
表并不代表像标量那样的存储格式。perl只有3种不同的数据格式:标量、数组、哈希表。标量:最简单的变量,存储单一的数据项:数字、字符串。在标量名的前面使用$号。在perl中对每个数据类型必须使用不同的前缀:标量用$、数组用@、哈希表用%、甚至在一些并非数据格式的项前面也使用了前缀:子程序的名字使用&,而通配量使用*。
perl中3种不需要前缀的项命名:文件句柄、格式名称、目录句柄。标量的两种类型是数字和字符串。给标量赋值时使用=预算符,如:$scalarl=5;$scal=”hello there!“;在perl的运算符和函数里也可以使用标量。所用的运算符和函数通常取决于标量数据是数字还是字符串。标量代表了存储数据项的实际内存位置;字符串或数字这些变量是perl存储的数据的最基本单元。表:数据元素的列表,那些元素并不一定是标量数值,它们本身可以是数组或哈希表,甚至其他表。表是将数据元素联系起来的结构, 可以通过把这些项放在括号中并用逗号分隔开的方法指明.例如:print("H","e","l","l","o");
perl中的函数分为两组:一组期望标量作为变量,另一组则希望变量为表。perl是基于程序工作环境做出决定的,两个最重要的工作环境就是标量环境和表上下文。如果perl预期使用表,它就会将数据看作是表;如果预期使用标量,它就会将数据看作是标量。在标量环境中,表可以变成标量,而在表上下文中,标量经常变成元素的表。标量实际就是内存里的数据空间的名字,数据就存储在该数据空间中,它可能是数字或字符串。使用$x=100;创建的标量是全局变量,这意味着可以在当前脚本的任何地方使用它们,但可以通使用含有my和local关键字的声明将它们局部化。
变量名可以含有字母、数字、下划线。这样的名字必须以$符号开头,以避免它与perl的保留字冲突。变量名区分大小写,$variable和$Variable不同。在开头的$之后,可以使用任何字母或下划线作为第一个字符。
PS:用数字作为$后的第一个字符。但是,如果变量名以数字开头,它必须全部由数字组成。
所有标量名前都要使用$符号做前缀。perl中使用的所有前缀及用处如下:
1.$——标量
2.%——哈希表(关联数组)
3.@——数组
4.&——子程序
5.通配量——如*myval代表myvar的每种类型,如@myvar,%myvar等
perl中无需声明标量在使用它们,第一次使用标量时,如果它并不存在,perl就会创建它。标量除了单独赋值外还可以使用同样的语句创建多重赋值如:$=$y=$z=1;在这个例子中,每个标量都设置了同样的数值:1。
左值通常代表内存里的数据空间,可以使用左值的名称存储数据。所有变量都可以作为左值。perl支持很多数字格式:整型(123)、浮点型(1.23)、科学型(1.23E4)、十六进制(0x123)、八进制(0123)二进制(0班01010)、下划线型(1_234_567)。
下划线型的数字类型,它能够将数字格式化为3个一组以便于辨认。例如:$variable=1_234_567;perl对于所有的数值计算都使用了双精度,同时其内部存储也是双精度。
标量可以容纳perl的未定义数值undef,某些函数返回这个数值,可以通过使用defined函数来检查。如果直接检查undef量,在数字环境中它被解释为数值0,在文字环境中,被解释为空字符串""。也可以通过使用undef函数将变量设置给undef值。perl中很多地方使用undef,在数字不合适的情况下,诸如sysread这样的函数返回值也是undef。未初始化的标量实际上也是未定义的。
通配量可以表示任何一种变量的数据类型。例如:数字常量类型常量。创建常量可以将引用赋值给通配量。例如:建立MAXFILES来保存所能容纳文件的最大数量:*MAXFILES=\100;通过$MAXFILES访问这个常量,像标量一样:*MAXFILES=\100; print"$MAXFILES\N";
Perl用两种方法在标量中存储真值和假值,对应于两种标量环境:数字和字符串环境。PS:在数字环境,”0“代表假,其余任何数值代表真;在字符串环境中,空字符串”“代表假,其余任意数值(包括负值)代表真。用非零值来代表真的事实对创建循环这样的历程特别有用。例如:while循环始终持续,因为<>总是返回一些东西,即使用户键入空行,在这种情况下<>返回换行符。
while(<>)
{print;}
PS:在检查未定义变量时,不是检查假值,当需要时,通过defined函数检查未定义变量。使用pack和unpack函数将数字转换为字符串或二进制以及反过来。将十进制转换为二进制:首先将数字按照网络字节顺序打包(也叫高字节在前顺序),然后逐位将其解包,如下:
$decimal=4;
$binary=unpack("B32",pack("N",$decimal));
print $binary;
pack函数将值打包到字符串;unpack将打包字符串解包为值。perl中八进制数使用打头的o指明,例如:0123:$x=o123;要想转换成八进制或从八进制转换,那就使用sprinf和oct函数。
1.将十进制转换成八进制使用sprintf函数,附带%o转换符:
print sprintf "%lo",16;
2.将八进制转换为十进制使用oct函数
print oct 10;
如果不指明想要转换的数值,这个函数默认使用$_。在perl中,十六进制数写的时候开头带有ox,比如ox1AB;$x=ox1AB;要想转换成十六进制或从十六进制转换,需使用sprintf和hex函数。
1.十进制转换成十六进制用sprintf函数,附带%x转换符号:
print sprint "%lx\n",16;
2.将十六进制转换成十进制使用hex函数:
print hex ox1AB;
如果不向hex函数传递想要转换的数值,这个函数默认使用$_.

© 著作权归作者所有

henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
Perl学习笔记 之 [ 函数, 参数, @_, $_, $_[0], shift ]

Perl函数 通过 & 调用. 2. Perl参数 Perl天然支持可变数目个参数。 在函数内部,所有参数按顺序放在数组 @ 中。 在函数内部,$[0] 表示函数的第一个参数。其余类推。 3. shift shift 后跟一个...

kingble
2013/04/26
211
0
Perl脚本学习笔记(二)

11. Perl没有Boolean类型,比较重要的是一点: 这意味着undef(很快会看到)为false。所有的引用(在Alpaca 书中有详细讨论)都是true。 12. chomp注意事项: (1)chomp 是一个函数。作为一个...

像教授
2017/11/26
0
0
大三现在,大四第一学期就要实习

比同龄的人年纪要大,到现在学的挺杂的,学得挺浅。 总算在这一个学期确定了自己的方向。 Linux网络编程。 去年开始接触了ubuntu,快一年了。系统卸载了又装,centos,archlinux,red hat都试过...

qiaobujian
2015/12/26
169
2
Per学习笔记[3]

Per学习笔记 1.子程序 (1)子程序的定义可以在程序的任意位置,且不需要在定义之前有任何声明。 (2)子程序的定义是全局的,可以在子程序中使用全局变量。 (3)所有的Perl 子程序都会返回值,在P...

wbf961127
2017/11/12
0
0
xtrabackup学习笔记

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/tarball/percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz yum -y install perl perl-devel libaio liba......

glassboy2009
2017/06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部