#!/usr/local/bin/perl -w use strict; use constant TEST=>1; sub test{ print "test\n" } my %COMMAND = (TEST()=>\&test); $a = 1; $COMMAND{$a}->(); |
这样通过hash可以运行对应的程序,为什么要在TEST后面添加()呢?
这样做的原因是如果不添加(),perl会不知道你需要的是TEST这个字符串还是它代表的意义,而加上就知道是TEST这个函数的返回值,其实就是定义的constant,这样就消除了岐义。
在
http://perldoc.perl.org/perlop.html#Comma-Operator
也有提到,=>左边会强制当做字符对待

没有评论:
发表评论