- perl语言特点
perl是一门跨平台的脚本语言,借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。 - 比较适用的范围
日志分析、后台作业,系统维护管理。 - 变量
- 普通变量,用"$" 开头定义的变量,和php一样,没有严格的类型,可以是数值型和字符串型;
字符串用单引号 或双引号界定,单双引号的意义和php中一样,双引号内的字符串中支持简单变量替换; - 普通数组和关联数组
这里和php有所不同,普通数组和关联数组有不同的定义方法;
普通数组就是类似php中定义时没有键只有值的数组,定义方法是: @array = (1, 2, 3, 4); 引用方法为:@array[0],@array[2]
关联数组也叫联合数组,hash结构, 定义: %ARRAY=(keyl,value1,key2,value2,key3,value3...); 增加: $ARRAY{key}=value; 取出: $get=$ARRAY{key}; 删除 delete $ARRAY{key};
- 支持的运算符
- 算术操作符:+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)
- 比较操作符:整数比较操作符有< (小于)、 >( 大于)、
= (等于)、 <
(小于等于)、 >= (大于等于)、 = (不等于); 字符串比较操作符 lt (小于)、 gt( 大于)、 eq (等于)、 le( 小于等于)、ge (大于等于)、ne( 不等于 ); - 逻辑操作符:逻辑或:$a || $b 或 $a or $b, 逻辑与:$a && $b 或 $a and $b,逻辑非:! $a 或 not $a ,逻辑异或:$a xor $b ;
- 位操作符 :位与:& ,位或:| ,位非:~,位异或:^ ,左移:$x << 1,右移:$x >> 2
- 赋值操作符:= ,+=,-= ,*= ,/= ,%=,**= ,&= ,|= ,^= ;
- 自增自减操作符 :++、--
- 字符串联结和重复操作符 联接: . ,重复:x
- 条件操作符 :条件?值1:值2;
- 流程控制
if ( <expression>) {
<statement_block_1>
}elsif( expression ) { // 要注意的是 这儿是elsif 而不是elseif
<statement_block_2>
} else{
<statement_block_3>
}
// while循环
while ( <expression> ) {
<statement_block>
}
//until循环
until ( <expression> ) {
<statement_block>
}
//for循环
for ($count=1; $count <= 5; $count++) {
# statements inside the loop go here
}
//foreach循环
foreach localvar (listexpr) {
statement_block;
}
//do循环
do {
statement_block
} while_or_until (condexpr);
-
- 循环控制 退出循环为last,与php中的break作用相同;执行下一个循环为next,与php中的continue作用相同;PERL特有的一个命令是redo,其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,redo命令在do循环中不起作用。
- 函数 用户函数又称子程序(Subroutine),在Perl中用下面的结构来定义用户函数:
sub functionname{
statements;
}
// 调用
&functionname;
functionname;
do functionname;
// 返回值
return (retval); #retval可以为列表
- 模式匹配-操作符
模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def。模式匹配也叫正则匹配,是Perl的一大特点。
- 匹配操作符 =~、!~
=~检验匹配是否成功:$result = $var =~ /abc/;若在该字符串中找到了该模式,则
返回非零值,即true,不匹配则返回0,即false。!~则相反。 这两个操作符适于条件控制中,如:
if ($question =~ /please/) {
print ("Thank you for being polite!\n");
} else {
print ("That was not very polite!\n");
}
模式支持正则表达式以及正则中的模式修正符具体支持哪些请查阅相关手册,这里就不详细说明了。
-
- 模式匹配-替换操作符
$string = "abc123def";
$string =~ s/123/456/;
# now $string = "abc456def";