スクリプトに引数を付けることで処理を色々に分岐させようとしています。

例:-a、-l、-h、-v、-r、<引数なし>を引数とする。
現在、引数を見て処理させる場合、
if ($#ARGV == "0") {
if ($ARGV[0] eq "-a") { 処理1; }
elsif ($ARGV[0] eq "-l") { 処理2; }
elsif ($ARGV[0] eq "-h") { 処理3; }
elsif ($ARGV[0] eq "-v") { 処理4; }
elsif ($ARGV[0] eq "-r") { 処理5; }
else { &error; }
}
elsif ($#ARGV == "1") {
if ($ARGV[0] eq "-a" && $ARGV eq "-l") { 処理5; }
elsif ($ARGV[0] eq "-l" && $ARGV eq "-h") { 処理6; }
elsif ($ARGV[0] eq "-h" && $ARGV eq "-v") { 処理7; }
elsif ($ARGV[0] eq "-v" && $ARGV eq "-r") { 処理8; }
elsif ($ARGV[0] eq "-r" && $ARGV eq "-a") { 処理9; }
else { &error; }
}
などとしていますが、引数が増えるとそれだけ組み合わせも増えるわけで
現在引数による分岐だけで混乱しています。しかもこのスクリプトを実際に
使用する場合、引数の順序も固定されてしまうので、表現力が乏しくなります。

それぞれの引数に数字を割り当てて、それをfor (@ARGV)で見ていって
それらを加算した結果で処理させる方法などを考えましたが、
数字を割り振るコツも分かりません。

引数や、それらの組み合わせが増えたとき、どういう風に対処すれば
分かりやすく、作りやすいスクリプトが書けるのでしょうか。

よろしくお願いします。