Ваша логика неверна, и ваш блок elseif всегда будет возвращать true. Я думаю, что вы хотите использовать AND вместо OR. Учитывая следующий фрагмент
foreach $status (1 .. 10) {
if (($status != 3) && ($status != 6)) {
print "$status => if\n";
} else {
print "$status => else\n";
}
}
Это выдаст
1 => if
2 => if
3 => else
4 => if
5 => if
6 => else
7 => if
8 => if
9 => if
10 => if
Если это помогает вашему мышлению, это условно! ! Что-то еще всегда можно переписать как! (что-то && что-то еще). Если вы примените это к вашему случаю выше, вы скажете! (3 && 6), и, видя, что число не может быть 3 и 6 одновременно, всегда ложно