if文における複数条件の簡略化
はじめまして。
Perlを勉強中の者です。
if文中における複数の条件に関する質問があるのでお願いいたします。
if文中における条件が複数ある場合に条件を簡素化することは可能でしょうか。
下記がただ今作成しているプログラムの一部なのですが、2つ目のif文中には10通りの条件があります。同一のプログラム内に同じ条件をもつif文が他数箇所あるので何か良い解決方法を探しております。
サブルーチンも考えたのですが、どのようにif文の条件として用いてよいのかわからないため、ご教授お願いいたします。
if ($code eq $codetwo){
if ((($code eq 'i')&&($F1mean<900)&&(1600<$F2mean)&&($F2mean<3100))|
(($code eq 'y')&&($F1mean<900)&&(1400<$F2mean)&&($F2mean<2800))|
(($code eq 'e')&&($F1mean<900)&&(1400<$F2mean)&&($F2mean<3000))|
(($code eq 'E')&&($F1mean<1100)&&(1400<$F2mean)&&($F2mean<2700))|
(($code eq 'a')&&($F1mean<1100)&&(900<$F2mean)&&($F2mean<2300))|
(($code eq 'x')&&($F1mean<1100)&&(800<$F2mean)&&($F2mean<2400))|
(($code eq 'X')&&($F1mean<1000)&&(700<$F2mean)&&($F2mean<2300))|
(($code eq 'c')&&($F1mean<1000)&&(600<$F2mean)&&($F2mean<2000))|
(($code eq 'o')&&($F1mean<1000)&&(600<$F2mean)&&($F2mean<1600))|
(($code eq 'u')&&($F1mean<1000)&&(400<$F2mean)&&($F2mean<1500))){
printf F0123VF "%5.3f %5.3f %s %s %s %s %6.2f (%3.2f) %6.2f (%3.2f) %6.2f (%3.2f) %6.2f (%3.2f) ", $timeBeg, $time, $code, $word, $phctxt, $fileID, $F0mean, $F0ratio, $F1mean, $F1ratio, $F2mean, $F2ratio, $F3mean, $F3ratio;
}
}
お礼
参考になりました 有難う御座います