Posted on 21-09-2009
Filed Under (技术) by waterlin

假如我有一个子过程,定义如下:

我又有一个变量:

这个 $test 的值刚好就是上面子过程的名称。既然我通过 $test 知道了这个子过程名称,我可以通过 $test 达到调用这个子过程的目的吗?也就是说,我让用户从命令行里输入一个子过程的名称,然后就可以根据这个名称来调用相对应的子过程。

方法一,直接根据用户输入的子过程名来调用该子过程。

完整的例子代码如下:

这里要注意,需要用

这个语句,否则脚本不能运行,Perl 解释器会提示类似于下面的错误:

Global symbol “$test” requires explicit package name at test2.pl line 10.

方法二,更常规的做法是专门用一个起分派作用的散列,根据用户输入的请示而调用相应的子过程。例如下面的 %dispatcher 就起到了绑定识别标记与相应子过程引用的作用,通过这个唯一的标记 (key),我们可以很容易地找到对应的子过程引用

然后可以用和方法一相同的语法来调用这个子过程:

下面是方法二的一个完整的例子:

当然,方法二要比方法一优秀得多,它可以避免用户输入错误的子过程名而导致一系列的麻烦。

© 2009, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

Post a Comment
Name:
Email:
Website:
Comments: