Unix has always enjoyed the capability of inherently running shell scripts based on the location of the interpreter in the first magic line of the file prefixed with #! (eg #!/usr/local/bin/perl). Unfortunately, Windows NT and other Win32-based systems do not enjoy that standard. Each Win32-based Web server seems to have its own method of figuring out how and when to execute CGI/Perl scripts.
Another issue with running CGI/Perl scripts under Win32 Web servers is that not all servers preserve the current working directory of the script. This is a problem
because it is much easier to maintain CGI/Perl scripts of the paths relative to the main program. Relative paths enable the user to move the whole CGI application from
different subdirectories and still have it work.