in reply to Unknown warnings/errors

The way many compilers (including perl, it seems) handle multi-line statements is to treat the entire line either as the first or last line in the group (here, the last). You have a single statement spread over a bunch of lines, it's no wonder it gets confusing. The error is thus pointing to the first line there, since /MSIE/ is short for m/MSIE/ (see perlop).

There are many improvements that should be made here, the least of which is to use proper if-then-else processing, and checking your values appropriately:

if (exists $ENV{HTTP_USER_AGENT} and $ENV{HTTP_USER_AGENT} =~ /MSIE/) { # handle MSIE case } else { # handle "other" case (could be Netscape, Firefox, Konqueror, Opera, + Nautilus, ...) }
More major is to start using CGI instead of checking the environment, and to acknowledge more browsers are out there than you can shake a stick at, so just follow the standards and stop second-guessing the user.