eval('use Win32::Console');
не проверяет ошибки. Если Win32 :: Console не удастся загрузить по какой-либо причине, код будет продолжаться в любом случае, пока он фактически не вызовет одну из подпрограмм, которые должны были быть загружены, но не были. В этот момент вы получите ошибки, подобные описанным.
Что произойдет, если вы добавите use Win32::Console;
в свой скрипт? (Я предполагаю, что вы получите какую-то ошибку, сообщающую, что Win32 :: Console не может быть загружен.)