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

博客介绍了Perl语言中子例程采用可变长参数列表,体现动态语言优点。通过传递引用可在子例程里改变参数值,还给出示例代码及运行结果。同时说明若不想改变参数值,可声明局部变量,并给出相应示例及结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值