概述
- 1987年Larry创造的,为了解决会计报表问题
- 特点:简单,快速,灵活,免费
my $num=1;
my $p_str="hello,i'm class ".$num."\n";
printf"$p_str\n";
#hello,i'm class 1
- 不用事先声明变量
- 正则表达式好用
- 应用场合:生物学数据处理,工程领域数据处理,web网站,数据库处理,作图,邮件处理,FTP功能自动化
perl开发环境的搭建
- 安装activeperl
良好的perl开发习惯
内建警告信息
- -w
#!/usr/bin/perl -w
use diagnostics;#在看到警告信息后加上这一行
use strict;
perldoc帮助文档
- 要好好使用帮助文档
perldoc -f chomp #查询内建函数,使用方法、说明、例子等
perldoc -f print#查询print函数,使用方法、说明
perldoc perlsyn #perl语法的详细说明
perldoc perl #返回perl文章列表,如概述,使用手册
perl数据类型——1标量Scalar
- 以$开头
数字标量
- 值为数字的标量,全部为双精度浮点数
- 可使用普通表达法也可以用科学计数法(eE大小写都可以)
-
可以用下划线"_",分开长数字
如314983475=314_983_475
字符串标量
- 值为字符串,由引号标识
- 单引号双引号都可以
-
字符串中需要带其中一种引号,那就用另一种引号做标识
或是在字符串中出现的引号前加反斜杠""
-
区别:转义支付只在双引号中有效,因此一般都使用双引号
标量的声明及作用域
- 可以在任意位置声明并使用
也可以不声明但是新手不推荐
作用域
- 作用域:是一个标量可以被有效访问并使用的范围
- 分类:包变量;私有变量
-
包变量:默认情况下的变量是包变量,是包内的全局变量,在整个包及先的子函数中可以用
perl中package是一个包,主函数也可看作一个包 -
私有变量:my、local
my:只在本层模块可以看到该变量
local:在本层和本层的下一层可看到该变量
perl数据类型——2数组
数组的定义
- 定义:是标量数据的有序列表,是多个标量数据的一种合集
- 可包含任意多个元素
- 以@为标识
-
各元素可以为不同类型
数组的赋值
-
列表直接量
-
可以用".."产生列表直接量,表示从左到右一次+1
字符串列表
- 可用“qw”表示,省去对字符串加引号
- 可以用空格,制表符,换行作为间隔符
- 可以用其他标点作为定界符,代替括号
("string1","string2","string3")
qw(string1 string2 string3)
qw/string1 string2 string3/
如何赋值:
@array=("string1",1.5,418)
- 如果列表中含有标量又含有数组,会将数组里的值取出作为元素,再赋值给这个新的数组
- 数组直接相互赋值,是复制过程,修改其中一个不影响另一个
特殊的赋值方式
- pop:取出数组最右边的元素,同时返回该元素值
@array=(5..9) ##(5,6,7,8,9)
$test1=pop(@array)##$test1=9,@araay=(5,6,7,8)
test2=pop(@array)##$test2=8,@araay=(5,6,7)
- push:添加一个(或一串)元素到尾端
@array=(5,6)
push(@array,8) ##@array=(5,6,8)
- shift:取出元素最左边的元素同时返回该元素值(与pop相似相反)
- unshift:添加一个(或一串)元素到数组的前端
数组元素的访问
- 通过索引,对数组的元素进行访问
-
索引值从0开始,中括号
- 特殊索引值
找最后元素的索引值是几?
$end=$#array #117
$array[-1] #直接索引最后1个元素
$array[-2] #直接索引倒数第2个元素
perl数据类型——3引用
- 定义:作为一种数据变量,可以指向变量、数组甚至子程序,代指值的地址
- =指针
-
在变量前加上反斜杠,就能得到这个值的地址
反斜杠\获取地址 - 修改地址内的值=修改这个变量的值
引用的方法
软引用
- 定义:类似于软连接,存储一个变量的名字
$scalar='hello'
@scalar=("hello","world",123)
$refer="scalar"#引用变量名
- 软引用的解引用
$$refer #实质对应的就是标量$scalar
$$refer[0] #实质为$scalar[0]
- 软引用实质:就是替代的过程,把变量名用另外一个变量替代
硬引用
- 定义:硬连接,存储地址
$scalarref=\$foo; ##引用变量$foo的地址,$foo='hello';
$constref=\186_282.42; ##引用常量的地址
$arrayref=\@arr; ##引用数组的地址,@arr=1..100;
$arrRef=[1,2,3,4,5]##引用匿名数组,需要用到中括号
*硬引用的解引用
-
使用花括号{}来对地址进行解引用
硬引用的解引用 -
举例
引用的应用
- 由于perl中数组只有一维的,用引用可以获取数组中列表中元素的值,如
@array=([1..5],'hello')
$array[0] #取到[1..5]
${$array[0]} #取到[1..5]的地址
${$array[0]}[0] #取到值1
网友评论