PERL学习笔记
Perl 学习笔记一、Perl基础1. 常用命令1.1 perl –v 显示Perl版本,测试Perl是否安装 1.2 perldoc –tf查找函数信息1.3 perldoc –q查找FAQ1.4 perl 是一种解释型语言,不需要编译;Python是虚拟机语言,要编译。 二、Perl的构件:数据,字符串1.
·
Perl 学习笔记
一、Perl基础
1. 常用命令
1.1 perl –v 显示Perl版本,测试Perl是否安装
1.2 perldoc –tf <函数名> 查找函数信息
1.3 perldoc –q <key> 查找FAQ
1.4 perl 是一种解释型语言,不需要编译;Python是虚拟机语言,要编译。
二、Perl的构件:数据,字符串
1. 转义字符用 /<symbol>表示
2. qq,q 运算符,使用非字符或数字作为限定符
3. 标题变量 $<key>
4. chomp 删除换行符
5. <stdin> 输入设备
6. 格式化字符串 直接在字符串中引用标量
三、控制程序流
1. 空 undef
2. last,redo,next都可以跟标号
3. exit 0 正常退出程序
四、列表/数组
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 @_;
五、文件操作
1. die函数
2. $!用来在die函数中返回操作系统的出错消息
3. warn
4. defined <>undef
5. $_ foreach读出的系统变量
例:
open(MYFILE,"c:/manifest.mf")||die "err:$!";
六、正则表达式
1. 正则表达式中的元字符:
$ { } # ^ @ | ? . + * [ /
2. 将模式串括起来的字符可以是任意的元字符;除非使用非斜扛分隔符,否则可以不使用m。
3. 用[ ]表示字符类
4. 通配符{最少出现次数,最大出现次数
5. 特殊字符类
/w 单词字符
/W 非单词字符
/d 数字
/D 非数字
/s 空白字符
/S 非空白字符
6. 选择 |
7. 位置通配符
^ 一行开始
$ 一行结尾
8.
替换
s/$searchpatten/replacement/;
9. 修饰符
/g 重复多次匹配
/I 忽略大小写
七、哈希结构
1. 用%声明 %hash=("k1","v1","k2","v2");
2. 用=>分隔键和值声明 %hash2=("k1"=>"v1","k2"=>"v2");
3. 引用哈希值 $hash{"k1"}
4. 用keys检索哈希表的关键字
foreach(keys %hash){
print "$_/n";
}
5. 用values 检索哈希表中所有值
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. 查找数组中的所有唯一元素
八、函数
1. 声明函数
sub subFun{
for($i=0;$i<10;$i++) {
print $i;
}
Return(true);
}
2. 参数
@_表示隐含参数列表
$_[2]表示第二个参数
($hit,$bats)=@_
例:
sub paramFun{
($a,$b)=@_;
print "/na=$a";
print "/nb=$b";
}
3. 声明函数内变量
My $y=500;
九、其它函数和运算符
1. index string , substring
2. rindex string , substring
3. substr string , 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格式化输出函数
十、操作文件和目录
1. opendir TEMPDIR,’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. stat filename; stat filehandle 返回文件句柄信息
# 打开目录下的所有txt文件
opendir(TD,"C:/TEMP")|| die "error:$!";
@FILES=grep(//.txt$/,readdir TD);
foreach(@FILES){
print $_;
open FILEH,"C:/TEMP/$_" || die "can't open file:$!";
foreach (<FILEH>){
print scalar($_);
}
}
@files=glob("C:/TEMP/*.txt");
foreach(@files){
print $_;
}
十一、系统互操作性
1. system 调用操作系统命令,正常返回0; 返回1.
十二、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. 读写锁控制: 设置一个信标文件
十三、引用和结构
1. 创建对变量的引用
$ref=/$a;
2. 输出地址引用的值
Print $$ref
3. 对数组和哈希表的引用
$$a[0]
@$a
%$a
$$a{xx}
4. 列表中的列表
@list_of_lists={[qw(xxx)], [qw(ddf)]};
5. 遍历数组
foreach my $outer (@list_of_lists){
print $outer;
foreach my $inner(@($outer)){
print $inner;
}
}
十四、使用模块
1. use 引用其它模块
例: cwd
获取环境变量
Strict 改变程序运行特性,使之对引用和裸单词变得严谨
十六、Perl历史
定位于解释型语言,适合作为CGI语言
更多推荐
已为社区贡献1条内容
所有评论(0)