私の環境の5つの異なる状態の検証スクリプトである5つのPerlファイルがあります。
それぞれに少なくとも2つのサブルーチンがあります。
これまで、州の数は5つに制限されており、これらは正常に機能していました。しかし今、私は環境の状態がさらに20あり、現在の設計によれば、Perlスクリプトがさらに20あります。
5つのスクリプトすべてを、状態を引数として取り、5つの異なる状態に対して5つの異なるサブルーチンを持つ1つのスクリプトに移動したいと思います。
このように、さらに別の状態の検証を追加する必要がある場合は、まったく新しいPerlスクリプトではなく、新しいサブルーチンを定義するだけで済みます。
問題は、ネストされたサブルーチン(問題が発生することが知られている)を使用すること、またはサブルーチン自体を展開することを意味することです。
例えば、
オリジナルのスクリプト
$ 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
}
$
これを解決するにはどうすればよいですか?