Здесь у вас есть две переменные - %permit
, который является хешем, содержащим пары ключ / значение, и $permit
, который является скаляром и ничего не содержит.
Чтобы найти значение в хэше, вы должны использовать синтаксис $permit{activity}
(обратите внимание, что там нет стрелки).Синтаксис $permit->{activity}
(со стрелкой) пытается использовать скаляр $permit
в качестве хэша ссылка и ничего не возвращает - поскольку $permit
не содержит ссылку на хэш.
Вы никогда не попадете в ветку if
, так как ваш код смотрит на неверную переменную.
Вот почему вообще очень плохая идея иметь две переменные разных типов с одинаковым именем (%permit
против $permit
).