Perl语言入门:再谈子程序

Perl的子程序和一般意义上的函数还是有一些区别的……本文作为前面一篇讲子程序的文章的后续,主要来谈谈Perl子程序的使用细节


子程序易错点总结


子程序中的变量作用域是全局的,除非声明为my否则和外面的变量没有区别

子程序中的@_数组接受来自参数的输入这是一个浅拷贝(按位拷贝)的过程

其它在子程序的产生的变量如果拷贝自@_即使是数组也都是深拷贝(按值拷贝)

传入参数会变为列表形式,@_[0]、@_[1]...中分别存放该列表对应位置参数

可以用@_[index]来改变传入的参数本身,但是不能直接用列表赋值来改变传入的参数本身

@_前隐式声明为my,在子程序每次被调用时会产生一个新的@_

子程序和外面是两个不同的命名空间

虽然说子程序中的变量是全局的,但是必须在子程序被调用后其内部的变量才能对外可见(否则 ‘undef’)

可以为你的子程序指定return值,但是灵活的Perl允许没有变量接受这个返回值(虽然不推荐);另外,如果子程序的最后一句是一个变量或表达式,会默认该变量或表达式为返回值(也可以像return值那样使用)



Perl语言入门:再谈子程序_第1张图片


Perl语言入门:再谈子程序_第2张图片


Perl语言入门:再谈子程序_第3张图片


Perl语言入门:再谈子程序_第4张图片


Perl语言入门:再谈子程序_第5张图片

你可能感兴趣的:(Perl,语言)