以前接触过perl一段时间,没用过,现在全忘了。刚又看了下perl,把基本知识总结一下:
1.单数变量用$前缀,数组用@前缀
定义数组:
@aray = (1, '2', $var);
$aray[4] = "ds";
2.可以数组交换赋值 ($a, $b) = ($b, $a);
3.复数变量包括数组和散列,数组是有序的,散列是无序的
4.散列用%前缀
定义散列:
%hash = ("mon" => "monday", "sun" => "sunday");
或者%hash = ("mon", "monday", "sun", "sunday");
$hash{"thu"} = "thusday";
取值:
$hash{"mon"}
5.复杂数据结构;
散列中的数组:$wife{"you"} = ["wife1", "wife2", "wife3"];
访问:$wife{"you"}[0];
散列中的散列中的数组:$wife{"you"} = {"wife1" => ["child1", "child2"], "wife2" => ["child3", "child4"};
访问:$wife{"you"}("wife1"}[0];
6.函数:
调用用户自定义函数的时候,前面可以加&也可以不加:$returnValue = &getUser();或者$returnValue = getUser();
7.标准输入输出: <STDIN> <STDOUT>
$var = <stdin> 等待用户输入
8.操作符:
+ 数字相加
. 字符串连接
** 幂运算 2 ** 3为2的3次幂
* 乘法
x 重复 ‘a’x3 则a重复三次
9.任何过程都拥有返回值,所以可以在一个语句中多次改变同一个变量的值
比如: ($temp -= 32) *= 5/9;
10.文件测试操作符:
-e 存在
-r 可读
-w 可写
-d 目录
-f 文件
-T 文本文件
11.判断:
if(){}elsif(){}else{} 必须有大括号
unless(){}如果不是这样则执行括号中的语句
12.循环:
while(){}为真则执行
until(){}为假则执行
for(){}for循环
foreach $v (@array) foreach循环
last和next 控制跳出循环:(例子)
Line:foreach $a (@array){
next Line if $a eq 1;
last Line if $a == 2;
}
13.正则表达式:
*在缺省状态下,Perl 量词都是贪婪的,也就是他们将尽可能多地匹配一个字符串中最大数量的字符
while ($line = <FILE>) {
if ($line =~ /http:/) { # 符号=~ 是模式绑定操作符
print $line;
}
}
和
while (<FILE>) {
print if /http:/;
}是一样的效果。
*最小匹配:/.*?:/ 加上问号?就表示是非贪婪匹配,取尽量小的字符串
/b 单词边界
^和$匹配行首和行尾