您的位置:首页 > 其它

Perl语言入门:再谈子程序

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

子程序易错点总结

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


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


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


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


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


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


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

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

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










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息