Perl开发中“路由器”的构造

1529阅读 0评论2012-08-24 努力小伙
分类:Python/Ruby

这里我以演示散列值为子例程引用来引出如何构造我们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。
上一篇:使用Erlang与Redis构建高效稳定的应用之一 -- Redis安装配置
下一篇:没有了