老大走了,同时留了大约7,8千行的Perl脚本给我们维护。以前Perl没学过,这两天大概看了一下,现在做下简单的总结。
总的感觉是:Perl语言真的很简洁!
变量
Perl的变量类型分成了几种:标量类型,数组类型,联合类型(理解成Map比较好)。
比如:
1 2 3 4 5 6 7 8 9 10 |
use strict; my $var1 = "hello, world"; #标量,整型,字符串,浮点等 my @var2 = qw(a b c d); # 数组 print $var2[0] # 取数组内容 my %var3 = ("i1"=>123, "i2"=>456, "i3"=>789); # Map print $var3{"i1"} # 取Map里的内容 |
NOTE:其实还有引用类型,只是现在还没有用到,先不总结了。
流程控制
这个部分和其他语言很像,但有些地方会再简洁,Larry果然真的确实”很懒”。
条件控制
1 2 3 4 5 6 7 |
if (expression) { ... } if (expression) { ... } else { ... } if (expression) { ... } elsif (expression) { ... } else { ... } # 你还可以 statement if expression; statement unless expression; |
循环控制
和C很像,就是有的地方别忘了加上$, 如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 如果使用了use strict, 要加上 # my $i; for ($i = 0; $i < 10; $i++) { ... } # foreach foreach $i (@array) { ... } # for, foreach还可以混着用 for $i (0 .. 10) { ... } # 也有while和do while ($i < 10) { ... } do { ... } while (expression); # break和continue 变成了 last和next while (...) { next if ($i == 5); last unless ($i > 10); } |
函数
基本语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sub hello { # 不用写parameter list my $i; foreach $i (@_) { # @_就是传入的参数 print $i . ", "; } } hello("abc", "def"); # 还有常见写法 sub readName { my $firstName = shift; # 用shift从@_读入第一个参数 my $lastName = shift; # 读第二个 ... } |
包(Package)
用package定义一个包,如:
1 2 3 4 5 6 7 8 9 |
use strict; package foo; # 声明了一个包 sub fun1 { print 'Hello'; } 1; # 相当于return 1; 非常重要,包文件一定要返回True |
最后的”1;”非常重要,不然别的脚本就无法使用这个包。Perl里的True/False很像Python里定义的。
那如何使用呢,也很简单。
1 2 3 4 5 |
use strict; require foo; # 这里就直接去找foo.pm的文件, 如果定义的是.pl, 那就换成require "foo.pl"; foo:my_fun1(); # 用::来调用函数 |
有几个小问题:
- 包的搜索路径在@INC中,如有需要,要在开始加
1push @INC, "/pacakge/path/"
总结
这些就是Perl的基本内容,再把正则表达式看一下就可以开始读代码的了。