Есть два различия между двумя частями кода.
Во-первых, как уже отмечали другие, существует проблема с оператором числового сравнения.
Но во-вторых, / $ dn / проверяет, содержит ли $ _ данные в $ dn. $ _ eq $ dn проверяет, точно ли $ _ равно $ dn.
Это различие может вызвать проблему, например, если ваши данные состоят из строк, прочитанных из файла, который не был обработан для удаления новой строки.