One option would be to close STDERR; at the top of your program. On my systems the initial eval does not fail because perl (v5.8.1-RC3 built for darwin-thread-multi-2level and v5.6.1 built for i386-linux) interprets %70^72#... as the hash named "70", xored with 72, followed by a comment. Or was the comment about eval failing misdirection on your part?