すいません言葉が足りませんでした。
use CGI;
$q = new CGI;
$mode = $q -> param('mode');

とかしますよね。でもサブルーチン使ったとしても
どこかに
> if ($mode eq 'regist') { ®ist; }
> elsif ($mode eq 'find') { &find; }
>          :
みたいのはどこかに絶対あるわけで
これがなんとかならないかな とか

SWITCH:
{
if ($mode eq = "regist" ) (®ist;last SWITCH)
if ($mode eq = "find" ) (&find;last SWITCH)
         :
}
こうやれば多少はましかな‥
でもズラズラ書くのは変わらないので恰好良くないな とか。