Perl子程序参数问题解答

开发 架构
本文向大家介绍一下Perl子程序参数的概念,Perl子程序参数是数组或哈希表时,函数中获得这些参数值的方式和一般的标量变量是不同的。

本文和大家重点讨论一下Perl子程序参数的用法,Perl子程序参数是数组或哈希表时,函数中获得这些参数值的方式和一般的标量变量是不同的。

Perl子程序参数是数组或哈希表时的问题

Perl子程序参数是数组或哈希表时,函数中获得这些参数值的方式和一般的标量变量是不同的。

Perl代码
 

  1. #!/usr/bin/perl  
  2. usestrict;  
  3. usewarnings;  
  4.  
  5. subfunc{  
  6. print"@_\n";  
  7. }  
  8.  
  9. my$id=1;  
  10. my@info=('PHPfans','phpfans.net');  
  11. my%info=("name"=>"PHPfans","url"=>"phpfans.net");  
  12.  
  13. func($id,@info);  
  14.  
  15. [root@PHPfansperl]#perlsub.pl  
  16. 1PHPfansphpfans.net  
  17.  

 发现第一个参数和第二个参数合并成一个大数组了。Perl子程序参数如果是哈希表的话还会将键值也保存在@_数组中。问题是怎么将各个参数分出来。这里第一个是标量变量,还可以用shift获取,然后剩下的就是第二个参数。但如果两个都是数组变量的话,这种方法显然就不行。这就要用到引用的方式传递。引用和C的指针是一致的,就是某值的地址。Perl的引用和PHP又不太相同,Perl是用反斜线(\)操作符

Perl代码
 

  1. #!/usr/bin/perl  
  2. usestrict;  
  3. usewarnings;  
  4.  
  5. subfunc{  
  6. print"@_\n";  
  7. }  
  8.  
  9. my$id=1;  
  10. my@info=('PHPfans','phpfans.net');  
  11. my%info=("name"=>"PHPfans","url"=>"phpfans.net");  
  12.  
  13. func($id,\@info);  
  14.  
  15. [root@PHPfansperl]#perlsub.pl  
  16. 1ARRAY(0x81f0e24)  
  17.  

 现在是要从该引用得倒改数组的值。如果$pointer的值为一个数组的指针,则通过形式@$pointer来访问数组中的元素。类似的,哈希表为%$pointer。

Perl代码
 

  1. #!/usr/bin/perl  
  2. usestrict;  
  3. usewarnings;  
  4.  
  5. subfunc{  
  6. my($id,$info)=@_;  
  7. my@info=@$info;  
  8. print"@info\n";  
  9. }  
  10.  
  11. my$id=1;  
  12. my@info=('PHPfans','phpfans.net');  
  13. my%info=("name"=>"PHPfans","url"=>"phpfans.net");  
  14.  
  15. func($id,\@info);  
  16.  
  17. [root@PHPfansperl]#perlsub.pl  
  18. PHPfansphpfans.net  

 【编辑推荐】

  1. 全面认识Perl子程序用法
  2. Perl模式匹配参数使用详解
  3. Perl命令行参数应用指导
  4. 学习笔记 Perl split函数用法指导
  5. Perl多进程及其和多线程的关系解析

 

责任编辑:佚名 来源: csdn.net
相关推荐

2011-05-10 14:14:10

OSPF路由

2011-05-10 14:32:19

OSPF路由

2010-10-09 17:19:50

mysql存储过程

2011-07-13 17:57:15

SQLite

2011-08-09 15:10:00

SQLite

2010-09-13 14:43:47

无线技术常见问题

2009-10-13 14:56:00

CCNA培训

2009-12-25 10:59:08

WPF Timer

2011-10-20 09:57:58

AS400 FTPFTP

2023-10-10 08:01:13

2009-10-27 11:10:56

linux问题解答

2010-05-12 17:04:20

BlackBerry开

2011-08-03 13:25:19

布线系统规划

2010-12-27 14:50:16

Windows 部署服

2011-04-14 10:46:23

2009-07-31 12:16:58

linux无盘系统

2011-07-21 11:19:51

JAVA

2009-12-24 18:03:35

WPF线程渲染

2009-12-03 18:09:51

Visual Stud

2015-06-30 12:39:33

公有云问题解答
点赞
收藏

51CTO技术栈公众号