Perl基础教程--精华篇

Posted 生信人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl基础教程--精华篇相关的知识,希望对你有一定的参考价值。

一、Perl的环境准备 

Linux/Unix:大多数内置 一些软件也内置perl,

Windows:ActivePerl5.10.0 Perl的工具 

二、编辑工具:

notepad++、ultraedit,

三、变量。

不像C语言一样,perl无需指定数据类型。

1、 perl的四种变量

Scalar:标量,以$开始,后面以字母或_开 头,再后面可以是字母或数字;

array:数组,列表,以@开头;

Hash: 哈希,散列,以%开头 文件:

2、变量特征

大写字母 区分大小写:$Var,$VAR,$var 

内置变量:$/,$@、@ARGV、$_等 

3、字符串变量 

由双引号或单引号标识的一组字符组成;最少0个字符(“”为空串),最多可以占满内存,

"${str}ing"=$str +ing" !=$string 

记住一些常用的转义字符像\.。加上\则$var不是系统内置变量了。

print“the \$var is $var.” 

注意单引号的用法:不替换、不转义

$var="str”; 

print “this is $var";# ”this is str”赋值的变量的内容

print ‘this is $var'; # ‘this is $var'系统内置变量

4、变量初值 

未创建时状态为undef,到达文件尾也为undef。

5、函数

length():字符串长度

uc,lc,ucfirst,lcfirst:改变大小写函数

substr,index,pos:字符串函数 

sin等三角函数

rand(),srand():随机发生函数

chop函数: $lastchar =chop($str)#截去最后一个字符 

chomp函数:$result=chomp($str)#截去末尾的行分隔符(通常 为”\n”),行分隔符由$/定义 

die函数:在控制台标准错误输出信息后退出程序。 

warn: 输出信息后不退出程序,只起警报作用。 

$!:内部变量,包含错误代码。 

$@:内部变量,包含错误信息。

6、控制结构

if(condition1){} elsif(condition2){}else{}}

unless(){}

until(){}

do{} until()

while(){} 

do{} while() 

for(;;){} 

foreach循环语句 

示例:

foreach $a(@a){statement;}#用于循环数组,每一行存储到$a中 

foreach $a(1,2,3,4){}用于列表 

foreach $k(keys %h){}用于哈希/散列 

foreach $a(@a[1,2,4]){}仅对数组部分元素

foreach (@a){}缺省循环变量为$_

7、 循环控制 

last:退出循环

next:进入下一循环

redo:重新执行本次循环 

goto:跳转 

8、列表——数组的形式

形式:(1,”a”,2.3,$a,$x+1),其元素可以是数 字、字符串、变量、表达式;

空列表(),单元素列表(2)不同于标量2;

qw(1 $a str) :()可以用其他符号表示,如<> 元素可以是数值、变量、不带引号的字符串, 中间用空格分开

9、数组——列表的存储 

@a=(1,2,3),不同于$a,初始值为();

元素形式:$a[0]表示第一个元素,索引从0开始, $a[‐1]表示倒数第一个元素;

数组的赋值: @a=(1,2,3,4);@b=@a; @b=(2,3);@a=(1,@a,4);

@a=<>;#从屏幕输入进行赋值,按下CTRL‐d结束;

改变元素的值:$a[1]=3; 

超出数组大小的元素赋值:$a[5]=6;#自动增长,其他元 素为NULL;

10、 数组的读出

@a=(1,2,3); 

$a=$a[1]; 

($x,$y,$z)=@a;=>$x=1,$y=2,$z=3;

($x,$y)=@a;=> $x=1,$y=2;

($a,$b,$c,$d)=@a;=> $a=1,$b=2,$c=3,$d=“”; 

$a=@a=$#a+1;#$a为数组长度,$#a为数组的最后一个元 素的索引

($a)=@a;#数组的第一个元素$a[0] 

打印数组:print @a;#元素直接相连;

print“@a”;#元素之间用空格分开

11、数组片段

@a=(1..5) 

@sub=@a[0,1,3]; 

@a[1,3]=(“a”,”b”);

@b=(1,2,3);

@sub=@a[@b]; 

@a[1,2]=@a[2,1];

@a[1,2,3]=@a[3,2,4]; 

12、数组操作函数

sort: $a,$b(系统内置变量自定尽量避免使用)表示数组元素;@b=sort{$a<=>$b}@a为对一维数组排序;@b=sort{$a->[0]<=>$b->[0] }@a为对二维数组排序;@b=sort{$a->[0]<=>$b->[0] or $a->[3]<=>$b->[3]  }@a##先按照第一列再按照第4列排序;以上均为对数字按照从小到大排序,若按照从大到小则$a与$b位置反过来;对字符排序使用cmp取代<=>;

reverse @a;#取数组的逆序

chop @a;#每个元素截去最后一个字符

shift(@a);#删除数组第一个元素并返回该值,缺省对 @ARGV数组

unshift(@a);#在数组头部添加元素,返回新数组长度 

push(@a,$a);#在数组末尾添加元素

pop(@a);#删除数组末尾元素

join(连接符号,@a)把数组连接为一个字串 @a=('a’,‘b’);join(‘:’,?@a)=“a:b”; split(/分隔符/,分割串,长度) 分隔符缺省为空格,可省略; 分割串缺省为$_,可省略; 长度:可省略;缺省为全部分割。

$s=“a,b,c”;

@a=split(/,/,$s);#即@a=(‘a’,’b’,’c’);

@a=split(/,/,$s,2);#即 @a=(‘a’,’b’,’c’);

splice函数:@ret=splice(@a,skip,length,@newlist);

对数组@a进行操作,跳过skip个元素,然后用@newlist替换 length个元素 @newlist长度可以不为length,但其替换长度总为length 如果length=0表示为插入;如果@newlist=()则表示为删除 当length和@newlist都省略时表示全部删除 。

@found=grep(/pattern/,@search)对数组@search的每个 元素进行搜索匹配pattern,匹配元素返回到@found。

map(expr,@list)对数组@list的每个元素进行expr运算, 返回运算后的数组。元素用$_替代,如map($_+1, (1,2)) (2,3) 

13、二维数组

@aoa=[[1,2,3],[‘a’,’b’,’c’]]; 该数组的元素为两个数组 

子数组访问:$aoa[0][0]=1 、$aoa[1][2]="c";

14、关联数组:哈希/散列

关联数组的表示:%hash=(1,’a’,2,’b’);

关联数组的下标为关键字key,由key得到的值为value 

上式的意义是%hash=(1=>‘a’,2=>’b’);

元素形式$hash{1}=‘a’

15、关联数组的赋值 

%a=(“key1”,1,”key2”,2); 

$a{"liu"}="wang";

$a{"you"}="we"; 

16、关联数组操作函数 

keys(%hash),values(%hash)分别返回键和值 的列表,返回元素无顺序

($key,$value)=each(%hash)效率高于先用 foreach $k(keys %h),再用$hash{$k}

exists $hash{‘key’}判断关键字是否存在 undef(%h)相当于删除散列%h=();

delete :删除键$a{"you"}

17、关联数组的顺序 

foreach $w(sort keys(%hash))#按照字符串排序 

foreach $w(sort {$a<=>$b}keys(%hash))#数值排序 

有啥不懂得欢迎留言,下期讲述文件相关操作,敬请关注!


以上是关于Perl基础教程--精华篇的主要内容,如果未能解决你的问题,请参考以下文章

单体架构转向微服务架构-基础篇+精华视频教程

(转)Perl基础教程一

常用网站网址(个个都是精华)

PHP入门基础教程

Python数据科学精华实战课程|Python数据科学视频教程

(基础篇) 正则表达式详解