软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
perl子例程参数传递方式初探

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

perl里,子例程采用可变长参数列表,因此参数的个数不再限制,体现出动态语言的优点。由于传递的是引用,所以可以在sub里改变它的值。
samle01.pl
#!/usr/bin/perl
sub sub_routine{
    $_[0] = "hello"; $_[1] = 999;
    print "sub_par1:$_[0]\n";
    print "sub_par2:$_[1]\n";
}
my $par1 = "abcde";
my $par2 = 2;
print "main_par1:$par1\n";
 print "main_par2:$par2\n";
&sub_routine($par1, $par2);
print "main_par1:$par1\n";
print "main_par2:$par2\n";

运行结果:
main_par1:abcde
main_par2:2
sub_par1:hello
sub_par2:999
main_par1:hello
main_par2:999

如果不想在子例程里改变参数的值,可以采用生命局部变量的方法。
sample02.pl
#!/usr/bin/perl
sub sub_routine{
 my $par1 = $_[0];
 my $par2 = $_[1];
 $par1 .= "fghijklmn";
 $par2 += 10000;
 print "sub_par1:$par1\n";
 print "sub_par2:$par2\n";
}
my $par1 = "abcde";
my $par2 = 2;
print "main_par1:$par1\n";
print "main_par2:$par2\n";
&sub_routine($par1, $par2);
print "main_par1:$par1\n";
print "main_par2:$par2\n";

运行结果:
main_par1:abcde
main_par2:2
sub_par1:abcdefghijklmn
sub_par2:10002
main_par1:abcde
main_par2:2



相关文章

相关软件