【发布时间】:2010-10-01 09:47:27
【问题描述】:
-
我有 5 个 Perl 文件,它们是我环境中 5 种不同状态的验证脚本。
它们中的每一个都至少有几个子例程。
-
到目前为止,状态数被限制为 5 个,并且这些工作正常。但是现在,根据当前的设计,我还有 20 多个环境状态,因此还有 20 个 Perl 脚本。
-
我想将所有五个脚本移到一个脚本中,该脚本将状态作为参数,并为 5 个不同的状态提供 5 个不同的子例程。
这样,当我需要为另一个状态添加验证时,我只需要定义一个新的子例程而不是一个全新的 Perl 脚本。
-
问题在于这意味着使用嵌套的子例程(known to run into issues),或展开子例程本身。
例如,
原始脚本
$ cat verify1.pl
sub a1 {
...
}
sub b1 {
...
}
a1(); b1(); a1();
$ cat verify2.pl
sub a2 {
...
}
sub b2 {
...
}
sub c2 {
...
}
a2(); b2(); c2(); a2();
$
合并脚本
$ cat verify.pl
sub one {
...
}
sub two {
...
}
my ($arg) = @ARGV;
if ($arg == 1) {
one(); # should do what verify1.pl did
}
elsif ($arg == 2) {
two(); # should do what verify2.pl did
}
$
我应该怎么做才能解决这个问题?
【问题讨论】:
-
不确定,但除非您实际使用 mod_perl,否则该链接可能不相关。只要记住打开警告,你应该没事..
标签: perl nested subroutine