Perl函数返回值用法指导

开发 架构
Perl编程语言中Perl函数返回值用法你是否比较熟悉,这里向大家简单介绍一下,希望本文的介绍能让你有所收获欢迎大家一起来学习有关Perl语言的相关内容。

本文和大家重点讨论一下Perl函数返回值的概念,在Perl中,return语句可以返回一个标量值或者一个列表,这个标量值可以是一个变量,或者一个表达式的最后求值。

Perl函数返回值

在Perl中,return语句可以返回一个标量值或者一个列表,这个标量值可以是一个变量,或者一个表达式的最后求值,如:return1;<===>return(1);return$a+$b;<===>return($a+$b);
然后,一个Perl函数的返回值,并不止一个,有的时候会有多个值需要返回,这是就要用到列表,这个列表可以包含多个变量值。

一、单一变量的Perl函数返回值

  1. #Functiondefinition.  
  2. subget_value()  
  3. {  
  4. my$var;  
  5. $var=1;  
  6. return($var);  
  7. }  
  8. #########Mainscript  
  9. my$result;  
  10. $result=get_value();  
  11. print"\$result=$result\n";  
  12. #######printresultis:  
  13. $result=1;  

 二、多个标量的Perl函数返回值

  1. #Functiondefinition.  
  2. subget_value()  
  3. {  
  4. my($var_a,$var_b);  
  5. $var_a=1;  
  6. $var_b=2;  
  7. return($var_a,$var_b);  
  8. }  
  9. #########Mainscript  
  10. my($result_a,$result_b);  
  11. ($result_a,$result_b)=get_value();  
  12. print"\$result_a=$result_a\n\$result_b=$result_b\n";  
  13. #######printresultis:  
  14. $result_a=1;  
  15. $result_b=2;  

 三、数组的Perl函数返回值

  1. #Functiondefinition.  
  2. subget_value()  
  3. {  
  4. my(@$var_a,@var_b);  
  5. @var_a=(1,2);  
  6. @var_b=(30,40);  
  7. return(@var_a,@var_b);  
  8. }  
  9. #########Mainscript  
  10. my(@result_a,@result_b);  
  11. (@result_a,@result_b)=get_value();  
  12. print"\@result_a=@result_a\n\@result_b=@result_b\n";  
  13. #######printresultis:  
  14. @result_a=1,2,30,40  
  15. @result_b=  
  16.  

 #!!!在这里,我们原本希望得到的结果应该是:
@result_a=1,2
@result_b=30,40
但实际上却并不是这样,这里一点需要注意的是:Perl中返回值中的列表是被“铺平(flattened)的”,也就是说:
return(@var_a,@var_b);<====等价===>return($var_a[0],$var_a[1],$var_b[0],$var_b[1]);
所以这个时候,return将会把returnlist里面的值,和接受returnlist里面的变量一一对应起来,当遇到数组是表示接受所有值。所以,解决这个问题就需要使用引用,如:
 

  1. #Functiondefinition.  
  2. subget_value()  
  3. {  
  4. my(@$var_a,@var_b);  
  5. @var_a=(1,2);  
  6. @var_b=(30,40);  
  7. return(\@var_a,\@var_b);  
  8. }  
  9. #########Mainscript  
  10. my(@result_a,@result_b);  
  11. my($result_a_ref,$result_b_ref);  
  12. ($result_a_ref,$result_b_ref)=get_value();  
  13. #hereneedtoencodethereference  
  14. @result_a=@$result_a_ref;  
  15. @result_b=@$result_b_ref;  
  16. print"\@result_a=@result_a\n\@result_b=@result_b\n";  
  17. #######printresultis:  
  18. @result_a=1,2  
  19. @result_b=30,40  

 所以对于哈希变量的返回也可以做同样的处理,当有标量,数组,哈希变量一起混合使用的时候也应该做同样的处理。

【编辑推荐】

  1. Perl语言中Perl函数返回值问题解析
  2. 专家推荐 Perl入门教程
  3. Perl引用中直接引用用法解析
  4. Perl基础 Perl包概念详解
  5. 技术分享 解析Perl模块创建和导入方法
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-20 11:37:00

Perl函数返回值

2010-07-26 10:09:01

Perl split函

2022-11-09 07:42:51

Python编程函数

2010-07-26 14:45:17

Perl Hash

2010-07-23 14:12:14

Perl Hash

2010-07-20 13:02:08

Perl数组

2010-07-26 15:17:51

Perl解析XML文件

2010-07-15 09:10:08

Perl函数手册

2021-08-13 11:31:23

HTTP

2009-11-17 16:16:59

PHP递归函数

2010-07-26 16:23:23

Perl语言

2010-07-19 10:01:57

Perl函数

2010-07-23 15:59:33

Perl encode

2010-07-23 13:23:10

Perl语言

2010-07-21 10:05:13

Perl文本处理模块

2010-07-19 14:20:57

Perl函数

2010-07-19 14:13:41

Perl函数

2010-07-16 16:56:01

Perl构造函数

2010-07-23 13:53:33

Perl grep函数

2010-07-19 15:01:26

Perl数学函数
点赞
收藏

51CTO技术栈公众号