这里我以演示散列值为子例程引用来引出如何构造我们Perl“路由”,有心的读者稍微根据结构再改造一下就可以构造自己"调度器"或者程序的"路由器"了,在一些应用中,用来做整个程序的主要控制部分还是不错的。
在我们构造这样的程序结构之后,就把对整个程序所有的功能控制抽象简化为对一个散列结构的控制,通过散列元素之间的各种组合来完成我们的工作。到底是什么结构呢?其实很简单,直接上代码。祝玩的开心!
- #!/usr/bin/perl -w
- use strict;
- ##################################
- # Dispatcher
- # 这样的结构在可读性和代码统一上有优势
- # 用来统一维护程序里面的子例程是个不错的选择
- ##################################
- my $dispatcher = {
- repeate_times => sub { &repeate_times }, # 重复一个字符串n次
- gen_seq_num => sub { &gen_seq_num }, # 连续数字生成器
- };
- ##################################
- # User APIs
- # '&'符号是否使用以可读性为准
- ##################################
- $$dispatcher{ repeate_times }("perl", 20);
- &{$$dispatcher{ gen_seq_num }}(300);
- ##################################
- # Local subroutines
- ##################################
- sub repeate_times($$){
- my ($worlds, $times) = @_;
- print "$worlds " x $times . "\n";
- }
- sub gen_seq_num($){
- my $to = shift;
- my @num = 1..$to;
- while(<@num>){
- print "$_ ";
- $| = 1; # 实时输出
- }
- print "\n";
- }
重点在演示结构,而不是程序本身,这只是个demo。
阅读(1509) | 评论(0) | 转发(0) |