Chinaunix首页 | 论坛 | 博客
  • 博客访问: 204672
  • 博文数量: 39
  • 博客积分: 1057
  • 博客等级: 准尉
  • 技术积分: 926
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-27 20:13
文章分类

全部博文(39)

文章存档

2012年(24)

2011年(15)

分类: Python/Ruby

2012-08-24 20:08:14

这里我以演示散列值为子例程引用来引出如何构造我们Perl“路由”,有心的读者稍微根据结构再改造一下就可以构造自己"调度器"或者程序的"路由器"了,在一些应用中,用来做整个程序的主要控制部分还是不错的。
在我们构造这样的程序结构之后,就把对整个程序所有的功能控制抽象简化为对一个散列结构的控制,通过散列元素之间的各种组合来完成我们的工作。到底是什么结构呢?其实很简单,直接上代码。祝玩的开心!

点击(此处)折叠或打开

  1. #!/usr/bin/perl -w
  2. use strict;

  3. ##################################
  4. # Dispatcher
  5. # 这样的结构在可读性和代码统一上有优势
  6. # 用来统一维护程序里面的子例程是个不错的选择
  7. ##################################
  8. my $dispatcher = {
  9.     repeate_times => sub { &repeate_times },  # 重复一个字符串n次
  10.     gen_seq_num => sub { &gen_seq_num },      # 连续数字生成器
  11. };


  12. ##################################
  13. # User APIs
  14. # '&'符号是否使用以可读性为准
  15. ##################################
  16. $$dispatcherrepeate_times }("perl", 20);
  17. &{$$dispatchergen_seq_num }}(300);

  18. ##################################
  19. # Local subroutines
  20. ##################################

  21. sub repeate_times($$){
  22.     my ($worlds, $times) = @_;
  23.     print "$worlds " x $times . "\n";
  24. }

  25. sub gen_seq_num($){
  26.     my $to = shift;
  27.     my @num = 1..$to;
  28.     while(<@num>){
  29.         print "$_ ";    
  30.         $| = 1; # 实时输出
  31.     }
  32.     print "\n";
  33. }
重点在演示结构,而不是程序本身,这只是个demo。
阅读(1475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~