Laz*_*zer 0 perl nested subroutine
我有5个Perl文件,它们是我环境中5种不同状态的验证脚本.
他们每个人至少有几个子程序.
到目前为止,州的数量限制在5个,这些工作正常.但是现在,根据当前的设计,我有20个以上的环境状态,因此有20个Perl脚本.
我想将所有五个脚本移动到一个脚本中,该脚本将状态作为参数,并为5种不同的状态设置5个不同的子程序.
这样,当我需要为另一个状态添加验证时,我将只需要定义一个新的子例程而不是一个全新的Perl脚本.
问题在于它将意味着使用嵌套子例程(已知会遇到问题),或者展开子例程本身.
例如,
原始脚本
$ cat verify1.pl
sub a1 {
...
}
sub b1 {
...
}
a1(); b1(); a1();
$ cat verify2.pl
sub a2 {
...
}
sub b2 {
...
}
sub c2 {
...
}
a2(); b2(); c2(); a2();
$
Run Code Online (Sandbox Code Playgroud)
合并脚本
$ 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
}
$
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
sub one {
do 'verify1.pl';
}
sub two {
do 'verify2.pl';
}
Run Code Online (Sandbox Code Playgroud)
但是,从长远来看,最好将脚本转换为模块,以便以现代和理智的方式管理复杂性.
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |