
88
|
第
4
章
say "defaults: @defaults";
say "default_end: @default_end";
运行结果如下,可以看到没有参数时是按照默认值运行的:
defaults: 0 1 2 3 4 5 6 7
default_end: 17 16 15 14 13 12 11 10 9 8 7
有时候我们需要某些可选参数,无需默认值,那么用
$=
占位符表示即可:
sub one_or_two_args ( $first, $= ) { ... }
其实
$=
是
Perl
的一个特殊变量,用于控制格式化文本,但在这里不会造成歧义,所
以借用这个形式。具体有关格式化的内容,这里不作展开。
有时候我们需要以无参数的方式使用子程序,比如一个返回常量值的子程序:
sub PI () { 3.1415926 }
可以阅读
perlsub
文档了解更多关于签名的内容。我们也为此特性写过一篇博客文章
《使用
v5.20
的子程序签名》(
http://www.effectiveperlprogramming.com/2015/04/use-
v5-20-subroutine-signatures/
)。
由于这是实验特性,将来可能会有改动。建议在生产系统中务必谨慎小心使用。
习题
以下习题答案参见第
304
页上的“第
4
章习题解答”一节:
1. [12]
写一个名为
total
的子程序,它可以返回给定列表中数字相加的总和。提
示:该子程序不需要执行任何
I/O
,它只需要按要求处理它的参数并给调用者返 ...