专家指导 Perl学习笔记
本文和大家重点讨论一下Perl学习笔记,Perl是一种能完成任务的语言。从一开始,Perl就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。
Perl学习笔记
一、Perl基础
1.常用命令
1.1perl–v显示Perl版本,测试Perl是否安装
1.2perldoc–tf<函数名>查找函数信息
1.3perldoc–q<key>查找FAQ
1.4perl是一种解释型语言,不需要编译;Python是虚拟机语言,要编译。
二、Perl的构件:数据,字符串
1.转义字符用\<symbol>表示
2.qq,q运算符,使用非字符或数字作为限定符
3.标题变量$<key>
4.chomp删除换行符
5.<stdin>输入设备
6.格式化字符串直接在字符串中引用标量
三、Perl控制程序流
1.空undef
2.last,redo,next都可以跟标号
3.exit0正常退出程序
四、Perl列表/数组
1.qw运算符声明列表
2.定义范围1..20
3.定义数组@<key>
4.引用数组元素$<key>[index]
5.查找数组大小$size=@array
6.$#foo最后一个元素的索引号
7.localtime返回一个表示当前时间的时间元素列表
8.for,foreach$var(@array)
9.split函数
10.join函数
11.sort给数组排序
12.<=>飞船运算符
13.scalar函数,强制转换为一个标量放入标量上下文,返回放入的数量
scalar@_;
五、Perl文件操作
1.die函数
2.$!用来在die函数中返回操作系统的出错消息
3.warn
4.defined<>undef
5.$_foreach读出的系统变量
例:
open(MYFILE,"c:/manifest.mf")||die"err:$!";
六、Perl正则表达式
1.正则表达式中的元字符:
${}#^@|?.+*[\
2.将模式串括起来的字符可以是任意的元字符;除非使用非斜扛分隔符,否则可以不使用m。
3.用[]表示字符类
4.通配符{最少出现次数,最大出现次数
5.特殊字符类
\w单词字符
\W非单词字符
\d数字
\D非数字
\s空白字符
\S非空白字符
6.选择|
7.位置通配符
^一行开始
$一行结尾
8.替换
s/$searchpatten/replacement/;
9.修饰符
/g重复多次匹配
/I忽略大小写
七、Perl哈希结构
1.用%声明%hash=("k1","v1","k2","v2");
2.用=>分隔键和值声明%hash2=("k1"=>"v1","k2"=>"v2");
3.引用哈希值$hash{"k1"}
4.用keys检索哈希表的关键字
foreach(keys%hash){
print"$_\n";
}
5.用values检索哈希表中所有值
foreach(values%hash){
print"$_\n";
}
5.reverse%hash转换成列表,键值对换
6.哈希合并%h={%h1,%h2}
7.测试哈希值是否存在if(exists$hash(keyval))
8.删除哈希值delete$hash(keyval)
9.删除所有键值%hash={}
10.查找数组中的所有唯一元素
八、Perl函数
1.声明函数
subsubFun{
for($i=0;$i<10;$i++){
print$i;
}
Return(true);
}
2.参数
@_表示隐含参数列表
$_[2]表示第二个参数
($hit,$bats)=@_
例:
subparamFun{
($a,$b)=@_;
print"\na=$a";
print"\nb=$b";
}
3.声明函数内变量
My$y=500;
九、Perl中其它函数和运算符
1.indexstring,substring
2.rindexstring,substring
3.substrstring,offset,length
可用于替换字符串
4.tr/searchlist/replacelist/转换运算符
tr/a-z/A-Z/;把大写转换为小写
$num=tr/0-9//;计算数字的数量
5.=~运算符
代替默认环境变量
$b=$a=~s/a/b/;把$a中a替换为b,赋值给$b
6.printf,sprintf格式化输出函数
十、Perl操作文件和目录
1.opendirTEMPDIR,’c:/’
2.readdir返回的文件名不包含路径名
3.closedir(TEMPDIR);
4.Glob函数查询文件返回的文件名带路径
5.grep查询文件返回的文件名不带路径
6.chdir
7.mkdir
8.rmdir只删除完全是空的目录
9.unlink删除目录下所有文件,并返回文件数量
10.rename
11.Example:
12.chmod赋予权限
13.statfilename;statfilehandle返回文件句柄信息
#打开目录下的所有txt文件
opendir(TD,"C:/TEMP")||die"error:$!"; @FILES=grep(/\.txt$/,readdirTD); foreach(@FILES){ print$_; openFILEH,"C:/TEMP/$_"||die"can'topenfile:$!"; foreach(<FILEH>){ printscalar($_); } } @files=glob("C:/TEMP/*.txt"); foreach(@files){ print$_; }
十一、Perl系统互操作性
1.system调用操作系统命令,正常返回0;返回1.
十二、Perl中DBM文件
1.DBM文件是与perl哈希结构联系在一起的文件结构。
2.将哈希结构与dbm关联起来
Dbmopen(hash,filename,mode);
3.each函数,对较大的哈希结构迭代操作
($key,$val)=each(%h);
4.open的限定符
<file只读
>file只写,不存在创建,重写
>>只写,创建,追加
5.随机读取文件
Seek(fileHandle,Offset,相对位置)函数
6.锁定UNIX和NT下的文件
Flock(FILEHANDLE,locktype);
FL_SH公共锁
FL_EX专用锁
7.读写锁控制:设置一个信标文件
十三、Perl引用和结构
1.创建对变量的引用
$ref=\$a;
2.输出地址引用的值
Print$$ref
3.对数组和哈希表的引用
$$a[0]
@$a
%$a
$$a{xx}
4.列表中的列表
@list_of_lists={[qw(xxx)],[qw(ddf)]};
5.遍历数组
foreachmy$outer(@list_of_lists){
print$outer;
foreachmy$inner(@($outer)){
print$inner;
}
}
十四、Perl使用模块
1.use引用其它模块
例:cwd获取环境变量
Strict改变程序运行特性,使之对引用和裸单词变得严谨