1. 代码块标签
对任何循环块来说,除了do/while或者do/until结构外,他们都可以设置一个“标签”(Label)。除了来对代码块作简要说明之外,这个标签还可以做next;last和redo等循环控制命令的一个“目的地”或“目标”使用。注意,在指定标签名的时候,在它后面要跟一个冒号;且标签一般使用大写。
例如:
OUTER:循环块 {
}
2. 裸块:
“裸块”是一种包含了零行或多行代码的代码块,用一对花括号封闭起来,既可能有标签,也可能没有标签——但无论如何,都没有配套使用的控制结构关键字。这种块经常和last和redo这样的循环控制语句配合使用。注意,在一个裸块使用场合,next等价last。
3. 逻辑运算符
与: && AND
或: || OR
非: ! NOT
在使用中一般使用“短路求值”。
4. 错误控制函数:die和warn
在程序出现错误的时候使用die函数进行错误提示,并中止程序运行。
一般写为如下格式:
关键条件 or die “错误:关键条件没有满足 /n”;
Perl会把最近产生的系统错误消息保存在一个名为“$!”的特殊变量中。
Warn函数可以产生和die相同的输出,只是程序不中止运行。
5. 内建数学函数
函数 | 说明 | 例子 |
cos($x) | 求x的余弦(x用弧度表示) | Cos(0)等于1 |
exp($x) | 求x的x次方 | Exp(1)等于2.71828 |
abs($x) | 求x的绝对值 | Abs(-5.1)等于5.1 |
log($x) | 求x的自然对数 | Log(2.71828)等于1 |
sin($x) | 求x的正弦值 | Sin(0)等于0 |
sqrt($x) | 求x的平方根 | Sqrt(900)等于30 |
6. 用户自定义子程序
如果调用子程序时,子程序后跟一对空括号,表明子程序不接受 任何参数。
子程序的主体部分必须封闭在一对花括号内部。
子程序定义的标准格式如下:
Sub 子程序名
{
语句
}
7. 参数列表
子程序接收的参数保存在特殊的数组变量@_中。
特殊数组变量@_可以“处理”或者“打散”所有数组与散列。也就是说,假如向子程序同时传送一个数组值和一个标量值,那么在最终的@_中,只会包含一个简单的列表,其中列出了来自数组的数据和标量值。类似地,如果把一个散列传递给子程序,那么@_最终也会拆散所有“键—值”对,用一种“平铺直叙”的方法,把这些数据表示出来。
注意:@_不能使用$# 统计数组的位数。
8. 返回值
Ø 一个子程序完成了自己的任务,结果数据可以通过return关键字返回子程序的调用者。
Ø 在子程序中使用如下表达式:
$value = shift;
意味着删除子程序特殊数组变量@_中的第一个元素,并将它赋予标量变量 $value。
Ø 一旦执行到return语句,子程序便会立即中止。Return以后的语句将不会执行。如果子程序没有明确的写return语句,那么子程序会默认返回它执行的最后一条语句的值。
Ø wantarray函数:如果子程序主体中调用了这个函数,那么假如子程序是在一个列表使用场合下调用的,该函数便返回一个真值;假如子程序是在一个标量使用场合下调用的,该函数便返回一个假值。
Ø 特殊变量$”,表示默认的分隔字符是什么,通常保存着“ ”值,(即一个空格)。在双引号中打印一个数组时,$”中的值决定了在不同的值之间,应该打印什么字符作为分隔符。
9. 调用子程序的其他方式
Ø Perl用类型标识符来区分不同的类型。对一个子程序的名字来说,应该在它的前面加一个类型标识符&。比如
&subroutine1();
它的作用便是调用一个名为subroutine1的子程序。
Ø 如果调用子程序不需要传递任何参数;或者子程序只接收调用者的@_变量(作为默认参数),那么就可以省去圆括号。但如果有任何显式参数需要传递给子程序,那么一对圆括号便是必需的。
Ø 调用子程序的另一种语法是“裸字”。子程序名周围没有任何特殊符号可帮助perl判断程序里一个名字的用途。假如在裸字之前,已经在程序中定义过字程序,那么perl会调用相应得子程序。但是,如果在裸字之前没有定义子程序,那么perl将会把裸字解释成为一个字串,不会调用与它相对应的子程序。
10. 生成随机数
Ø 使用函数rand可生成一个浮点标量值,它默认情况大于0,但小于1。在rand函数种可以限定随机数产生的范围,如:rand(6) 产生一个大于0,小于6的随机数。
Ø 伪随机数:函数rand随机数产生是利用前一个随机数以及一个“种子”值,来产生下一个随机数。如果使用srand函数设定种子值,将产生伪随机数。
Ø 由rand函数直接生成的值肯定在如下范围内:
0<= rand ($x) < $x
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>