perl子例程參數傳遞方式初探

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章