Perl基础知识大全

开发 架构
本文向大家介绍一下Perl的概念,刚开始时Perl是一种文本处理语言,是一种理想的编写商业报告、完成系统管理工作以及处理html表单的语言。

本文和大家重点讨论一下Perl的概念,Perl是一种文本处理语言,现在Perl提供了大量的模块集。Perl是:一种核心且及其灵活的语言,一套已安装的模块。下面请看本文有关Perl内容详细介绍。

Perl基础知识

1,Perl介绍
(1)
刚开始时Perl是一种文本处理语言,是一种理想的编写商业报告、完成系统管理工作以及处理html表单的语言。现在Perl提供了大量的模块集。Perl是:
一种核心且及其灵活的语言
一套已安装的模块
CPAN——一个包含上千个有用模块的库
在线模块文档

(2)在线文档
》perldocperl
查看函数:perldoc-t-fjoin
打印文档,Perl以POD的形式保存文档,可以方便转成其他多种格式,例如:
perldoc-usubject|pod2html>file.html

(3)安装模块
windows下使用ppm:
ppminstalltk  #p#

2,Perl基础知识

(1)helloworld.pl
usestrict;//打开严格语法和变量检查
usewarnings;//打开附加编译和运行时的警告
print"helloworld\n";//打印信息

运行方式,命令行下:perlhelloworld.pl

(2)变量和简单表达式
只有一种变量,字符串

定义变量:
my$size=42;#这是注释
my表示局部变量,42实际上是“42”

如果变量没有初始化,就被赋予一个特殊值undef,对undef进行比较、打印或算术运算会出错。

(3)打印变量:
print"size=$size"
会打印出size=42;
如果要打印"$",需要转义

perl也有printf,类似c语言,不过只在需要精确控制变量格式的地方才使用,比如:
printf"%3d:%-20s%5.2f\n",$sequence,$description,$amount;

(4)运算符
和c一样,多的有:
.:字符串连接
**:乘幂
x:重复,比如:my$no="no"x3;

(5)引用规则
如果输出的字符串后面还有字符,需要用大括号分隔,例如:
my$title="$name\t${size}inches"

如果不希望Perl窜改你的字符串,则要使用单引号。Perl不会解释单引号内的东西,除非\'和\\

(6)数字常量
与c相同,包括八进制和十六进制,数字中还允许使用下划线,例如:
my$cost=1_333_832;

(7)读取输入
从标准输入读取输入:
$variable=<STDIN>;(stdin也可以全小写)
将读取整行,直到新行,包括你的回车。

chomp($name),可以去掉字符串末尾的新行

(8)if语句和关系运算符
例如:
if($size==1){

}elsif($size==2){//注意不是elseif

}else{
die("错误");//打印错误消息并退出
}

关系运算符分别有用于数字和字符串的:
数字字符串
==eq
!=ne
<lt
<=le
>gt
>=ge

如果字符串用了数字的关系运算,会将字符串转换为0,会显示一个警告

(9)测试变量是否有值
defined($value)
取消定义变量undef($value)

(10)真的定义
false:未定义变量,空字符串,值“0”
true:其他情况

(11)循环语句
while(condition){
last;//退出循环,类似c中的break
}
for($i=0;$i<10;$i++)
{
}

(12)简单IO
读取文件:
openIN_FILE"<data.txt"//打开data.txt,“<”是一个特殊字符,表示要读取
典型使用:openIN_FILE,"<data.txt"ordie("Couldnotopendata.txt");
如果成功就不会执行or后面的语句

读取文件中的数据:
$line=<IN_FILE>
if(notdefined($line)){//判断是否EOF

}
close(IN_FILE)//关闭文件
建议对读出来的东西都进行chomp,去掉"\n"

写入文件:
openOUT_FILE">data.txt"//打开data.txt,“>”是一个特殊字符,表示要写入
printOUT_FILE"hello\n"  #p#

3,Perl数组

Perl中所有Perl数组变量都以@开头

(1)基本Perl数组
定义和使用
my@list=("a","b","c");
$list[0],$list[1],$list[2],下标从0开始

Perl数组中元素个数:$#array_name,返回Perl数组中最后一个变量的索引=Perl数组元素个数-1
空Perl数组$#array_name=-1

Perl数组表达式:
@array=(1,$data,"sam");
@array_dest=@array_source;
@full_message=($prefix1,$prefix2,@message);//在message前面加了两个元素,赋值full_message

打印Perl数组:
print“@array”,打印结果中间用空格分隔,去掉双引号,中间没有分隔

带有“黑洞”的Perl数组:
如果Perl数组中有没有赋值的元素,则为undef,例如:
my@array=(1);
$array[5]=4;//中间的几个下标对应的都是undef

引用词运算符qw:
my@array=qw(tomdickharry);//中间除了空格没有其他分隔符
相当于my@array=("tom","dick","harry");

(2)一些Perl数组相关函数:
push(@array,$value):向结尾添加一个元素

pop(@array):取走最后的元素并返回

unshift(@array,$value):在Perl数组起始添加一个元素

shift(@array)或者shift@array:取走第一个元素并返回(函数都可以省略括号)

(3)处理Perl数组的一部分:
可以用一套索引,例如:
my@new_array=@array[1,3,5];
@array[1,0]=@array[0,1];

范围运算符,例如:
@arry[0..9]=((0)x10);//重复10次0

(4)splice函数
splice可以删除或者替换Perl数组的一部分,格式为:
splice@array,$offfset//删除从offset开始到末尾,offset为下标,offset为负数则从结尾算起
例如:
my@array=(0,1,2,3,4,5);
splice(@array,-2);
将得到0123

splice会返回最后删除的函数。

splice另一种形式:
splice@array,$offset,$length,删除length个元素

第三种形式:
splice@array$offset,$length,REPLACEMENTS
删掉后,从offset开始添加REPLACEMENTS里的元素,REPLACEMENTS可以是标量或者Perl数组

(5)split和join函数
@array=splitRegExpr,$string//将$string按照RegExpr指定的分隔符来分解放到@array中

$string=join$union,@array//将@array中元素用$union连接,赋值给@string

(6)Perl数组排序
sort函数,默认按照ASCII顺序排序:
my@sorted=sort@array;

按数字顺序排序:
@result=sort{$a<=>$b},@unsorted;

(7)@ARGV变量
包含程序的命令行参数,与c中不一样,第一个参数不是程序的名字
程序的名字在变量$0(数字0)中

【编辑推荐】

  1. Perl if语句用法实例解析
  2. Perl文件句柄概念详解
  3. 实例解析Perl守护进程用法
  4. Perl模式匹配经验总结
  5. 术语汇编 Perl变量中Perl关联数组用法解析
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-23 13:16:07

Perl

2010-07-16 10:53:30

Perl基础

2009-08-24 17:07:09

C# 泛型

2011-03-31 14:46:29

MySQL数据库备份

2010-01-25 11:55:41

MySQL数据库备份数据库安全

2009-09-23 11:07:11

Hibernate基础

2009-04-17 14:22:40

XPathXML基础

2015-06-01 13:35:43

数据中心DCIM

2023-07-04 07:31:06

MapReduce数据处理编程模型

2014-08-20 10:15:45

2011-09-16 10:13:02

Emacs

2009-04-10 09:35:00

WCDMA基础无线网络

2011-03-29 14:11:20

Cacti基础知识

2021-11-05 15:31:01

UbuntuLinux

2009-08-13 12:50:45

C#基础知识

2010-08-24 15:39:59

2011-05-27 16:12:18

SEO

2014-06-17 09:55:24

机器学习

2009-08-13 16:13:03

C#基础知识

2009-07-15 16:00:34

桥架综合布线
点赞
收藏

51CTO技术栈公众号