#!/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(*)
Perl----子程序练习
最新推荐文章于 2022-06-01 10:50:50 发布
本文介绍了Perl编程中子程序的使用,通过实例讲解如何定义、调用子程序,以及参数传递和返回值处理,帮助读者掌握Perl的模块化编程技巧。
摘要由CSDN通过智能技术生成