第6章 子过程
来源:互联网 发布:清朗网络 青年力量海报 编辑:程序博客网 时间:2024/05/17 02:48
方法和函数或子过程是同样的方式定义的,只是调用方式不同1.0 语法:声明一个命名子过程,但不定义它,使用下面的形式:sub NAME BLOCK创建一个匿名子过程或子句,把NAME去掉就可以:sub BLOCK[root@node01 6]# cat a1.pl $subref = sub { my $a=shift; my $b=shift; return $a + $b;};print $subref->(23,34);[root@node01 6]# perl a1.pl 57[root@node01 6]# 可以用下面的方法引入在另外一个模块中定义的子过程:[root@node01 6]# cat Pkg01.pm package Pkg01; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw($munge frobnicate); # symbols to export on request $munge="d1dsad1`131"; sub frobnicate{ my $a=shift; my $b=shift; return $a*$b;};1 ;[root@node01 6]# cat a2.pl use Pkg01 qw($munge frobnicate);print $munge;print "\n";print frobnicate(99 ,35);[root@node01 6]# perl a2.pl d1dsad1`1313465[root@node01 6]# 间接调用子过程(通过名字或引用),可以使用下面的任何一种方法:2.0 语意:3.0 传入引用:如果你想在一个函数中传入或传出不止一个的数组或散列结构,同时你虚妄它们保持它们的一致性[root@node01 6]# cat a3.pl sub sum { my $aref=shift; my $total=0; foreach (@{$aref}) { $total = $_ + $total;}; return $total;};my @a=(1,4,7,23,4);print sum(\@a);[root@node01 6]# perl a3.pl 39[root@node01 6]# [root@node01 6]# cat a4.pl sub popmany { foreach $aref (@_){ push @retlist,pop @$aref; } return @retlist;};my @a=(a1,a2,a3,a4);my @b=(b1,b2,b3,b4);my @c=(c1,c2,c3,c4);my @d=(d1,d2,d3,d4);@tail=popmany(\@a,\@b,\@c,\@d);print @tail;[root@node01 6]# perl a4.pl a4b4c4d4[root@node01 6]# 4.0 函数原型:Perl 可以让你定义你自己的函数,这些函数可以像perl的内建函数一样调用。例如push(@array,$item),它必须接收一个@array[root@node01 6]# cat a5.pl my @array=('a1','a2','a3','a4');push (@array,"xxx");print @array;[root@node01 6]# perl a5.pl a1a2a3a4xxx[root@node01 6]# 函数原型:sub mylink ($$):[root@node01 6]# cat a6.pl sub mylink($$){ my ($a,$b)=@_; return $a + $b;};print mylink(3,5);[root@node01 6]# perl a6.pl 8[root@node01 6]# [root@node01 6]# cat a7.pl sub myreverse (@){ my $a=shift; my $b=shift; my $c=shift; return $a + $b + $c;};my @a=(1,4,7);print myreverse(@a);[root@node01 6]# perl a7.pl 12[root@node01 6]# 4.1 内联常量函数:5.0 子过程属性:子过程的定义和声明能够附带一些属性,如果属性列表存在,它使用空格或者冒号分割5.3 左值属性:除非你定义子过程返回一个左值,否则你不能从子过程中返回一个可以修改的标量值:
阅读全文
0 0
- 第6章 子过程:
- 第6章 子过程
- 第六章 子过程:
- 第六章 子过程 和子过程引用
- 第5章 过程
- 第7章 子查询
- 第8章 子查询
- 子过程
- 第4章第1节练习题6 二叉树叶子节点链接成单链表
- 第9章 子窗口控件
- 第 9 章 子窗口控件
- 第4章 最大子数组问题
- 第6章 推理过程中有没有谬误
- 子窗体创建过程
- perl -- 子过程-->语法
- 子过程实践
- Windows 游戏编程大师技巧第四章第6个例子---定时器的使用
- MOOC清华《程序设计基础》第6章:最长公共子序列问题(动态规划)
- 关于Scrapy 自定义Spider Middleware中遇到的坑
- <img src 引入base64格式数据 显示图片 >
- 条件阻塞Condition的应用
- Nginx配置proxy_pass转发的/路径问题
- applicationContext.xml配置hibernate 自动生成表失败
- 第6章 子过程
- fiddler网络调试神器(前端)——擦肩而过
- listview的分页
- 图像处理基本算法-立体视觉
- 合并文件夹二
- StringEscapeUtils类的转义与反转义方法
- 复习Android:笔记(一)工具下载(studio,jdk')和环境配置
- SQL
- 关于RFC 5681和《TCP/IP IIIustrated》在ssthresh(慢开始门限值)调整的区别