
与其它编程语言不同,Perl子程序除了在调用时接受一个参数列表外,还可以返回一个结果列表。这一特性非常有用,因为这样你就无须在简单的脚本中使用数据结构或者对象来返回多条信息了。
Perl实际上返回的是最后一个表达式的值。如果你没有给出一个显式的返回语句,它仍旧会返回一个值。下面例子中的代码将会打印出“hi”,这是因为Perl把到$phrase的赋值语句的结果作为返回值。(然而,为了确保代码的易读性和可维护性,最好还是使用显式的返回语句。)
print &hi;
sub hi { my $phrase = "hi
"; }
如果你使用的显式返回语句没有值,那么返回值取决于调用子程序的上下文。如果被调用的子程序没有赋值语句,那么就没有返回值。如果子程序在标量上下文(scalar
context)中调用,它将返回为不确定的值,如果子程序在列表上下文(list context)中调用,那么它将返回一个空列表。