Learning Perl(Perl语言入门)学习笔记(3)

第四章 子例程
 
1、  子例程(subroutine)即用户自定义函数,子例程调用时通常在子例程名前加上“&”符号;子例程名属于独立的命名空间;
2、  子例程可以在程序中的任何地方进行定义,但要防止两个子例程重名,否则后者会覆盖前者;定义标准格式为:                                                                   
sub 子例程名 {
      语句;
}
3、  Perl 中,任何子例程都有返回值,返回值通常是程序所执行的最后一个表达式的运算结果,也可以使用return关键字为子例程指定返回值,当然,也可以省略关键字return;在子例程中,程序一旦运行到return语句便会终止,而不会执行其后的任何语句;
4、  子例程的返回值根据不同的上下文可以不所不同,即返回值可以是标量值,也可是列表,甚至可以是“不确定”;可以使用wantarray函数来检测其返回值类型,子例程返回值为列表时为“真”,返回值为标量时为“假”;
5、  Perl 会自动将传入的参数列表存入名为@_的数组变量,无论传入的是一个列表、标量、还是散列,甚至是以上任意间的组合;
6、  Perl 中所有的变量默认均为全局变量;可以使用my操作符来创建称为lexical variable的私有变量,其作用范围为所属的代码块;代码块中最后一个语句的后的“;”(分号)可省略,但一般不这么做;如果私有变量的定义不属于任何块,那么其作用范围是整个程序文件;my操作符不会改变变量赋值时的上下文;my后不加括号时,其声明的私有变量仅为紧随其后的变量;
7、  编译命令(pragma)是对编译器的指示,用来指定编译程序时所采用的规则;use strict可以强制编程期间使用良好的程序语言规则;但不对$_@_进行限制;
8、  子例程调用时,“&”可以省略,前提是Perl可以从语法上分辨出此次调用是一个子例程;比如,调用带有参数列表,或者子例程定义在子例和定义之前;但是,如果子例程和内置函数重名,则必须使用“&”符号;

你可能感兴趣的:(入门,perl,笔记,休闲,learning)