Perl----子程序练习

本文介绍了Perl编程中子程序的使用,通过实例讲解如何定义、调用子程序,以及参数传递和返回值处理,帮助读者掌握Perl的模块化编程技巧。
摘要由CSDN通过智能技术生成
#!/usr/bin/perl -w
#创建子程序检查$values的值
# sub printOK
# {
# if($values>10){
# print "Values is $values.\n";
# }
# else {
# print "Value is too small.\n";
# }
# }
# $values=15;
# printOK;
#在默认情况下Perl变量在全局范围内有效,因此可以在子程序printOK内部变量引用变量$values。变量的范围指可以引用变量的程序代码部分。
#使用关键字local和my关键字来创建变量,这种变量的范围完全限于类似printOK这样的子程序内部。这种局部变量的范围完全限于子程序,这意味着
#它们可以和全局变量具有相同的名称,但根本不会影响全局变量的值。
# sub printOK
# {
# my $localvalues=$values;
# if($localvalues>10){
# print "Values is $values.\n";
# }
# else {
# print "Value is too small.\n";
# }
# }
# $values=15;
# printOK;
# $values=8;
# printOK ($values);
#向子程序传递值时,那些值存储在特殊的perl数组@_中,可以在子程序内部访问这个数组。下面例子使用shift函数从@_数组得到传递给printOK的值:
sub printOK
{
my $localvalues=shift(@_);
if($localvalues>10){
print "Values is $values.\n";
}
else {
print "Value is too small.\n";
}
}
$values=15;
printOK($values);#使用函数时必须使用这种方式
$values=8;
printOK ($values);


#返回值
#除了接收传递的值之外,子程序也可以返回值,下面的例子使用return函数从子程序返回传递的两个值之和
#从子程序返回值取代了子程序本身的名称,而且在print语句中直接连接在字符串内:
sub addem
{
($value1,$value2)=@_;
return $value1+$value2;
}
print "2+2=".addem(2,2)."\n";


#perl和其他语言不一样,在perl中,不需要再使用子程序之前的声明,除非在没有将参数包围在括号的情况下使用子程序,这中情况下,必须在使用之前声明或者定义子程序。
#perl中声明子程序的不同方法:
#sub SUBNAME;
#sub SUBNAME(PROTOTYPE);
#sub SUBNAME BLOCK;
#sub SUBNAME(PROTOTYPE) BLOCK;
#从perl程序包中导入子程序:
#use packagename qw(subname1 subname2 subname3);




#子程序也有前缀反引用符号,使用反引用符号是可选的。子程序的反引用符号是:&,出现在每个子程序名称开头的&字符是名称的隐含组成部分,可以忽略它。




#如果希望在addem的时候不添加括号:方法一是在使用addem之前声明
sub addem;
$value3=addem 2,2;
print "2+2=$value3\n";
sub addem
{
($value1,$value2)=@_;
return $value1+$value2;
}
#方法二:在使用子程序之前定义子程序:
sub addem
{
($value1,$value2)=@_;
return $value1+$value2;
}
print "2+2=".addem 2,2;
print "\n";


#使用子程序原型
#-----------------------------------------------------------------------------------------------------------------------------------------
#        声明             |               原型
#    sub SUBNAME($)       |         SUBNAME $argument1;                                    
#    sub SUBNAME($$)      |         SUBNAME $argument1,$argument2;   
#    sub SUBNAME($$;$)    |         SUBNAME $argument1,$argument2,$optionalargument;   
#    sub SUBNAME(@)       |         SUBNAME $arrayargment1,$arrayargment2,$arrayargment3;   
#    sub SUBNAME($@)      |         SUBNAME $argument1,$arrayargment1,$arrayargment2;   
#    sub SUBNAME(\@)      |         SUBNAME $argument1;   
#    sub SUBNAME(\%)      |         SUBNAME %{$hashreference};   
#    sub SUBNAME(&)       |         SUBNAME anonymoussubroutine;   
#    sub SUBNAME(*) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WEL测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值