The problem is not that the file cannot be read. The file can be read just fine. However, if it happens not to be a ZIP archive, the Archive::ZIP package spews half a screen of errors from various parts of itself, essentially complaining about the missing signature and going downhill from there.