perl子例程参数传递方式初探

王朝perl·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航