The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 4.13_04 - 2015-03-08

  • RELEASE NOTES
    • This release removes the AUTOLOAD and compile optimisations from CGI.pm that were introduced into CGI.pm twenty (20) years ago as a response to its large size, which meant there was a significant compile time penalty.
    • This optimisation is no longer relevant and makes the code difficult to deal with as well as making test coverage metrics incorrect. Benchmarks show that advantages of AUTOLOAD / lazy loading / deferred compile are less than 0.05s, which will be dwarfed by just about any meaningful code in a cgi script. If this is an issue for you then you should look at running CGI.pm in a persistent environment (FCGI, etc)
    • To offset some of the time added by removing the AUTOLOAD functionality the dependencies have been made runtime rather than compile time. The POD has also been split into its own file. CGI.pm now contains around 4000 lines of code, which compared to some modules on CPAN isn't really that much
    • This essentially deprecates the -compile pragma and ->compile method. The -compile pragma will no longer do anything, whereas the ->compile method will raise a deprecation warning. More importantly this also REMOVES the -any pragma because as per the documentation this pragma needed to be "used with care or not at all" and allowing arbitrary HTML tags is almost certainly a bad idea. If you are using the -any pragma and using arbitrary tags (or have typo's in your code) your code will *BREAK*
    • Although this release should be back compatible (with the exception of any code using the -any pragma) you are encouraged to test it throughly as if you are doing anything out of the ordinary with CGI.pm (i.e. have bugs that may have been masked by the AUTOLOAD feature) you may see some issues.
    • References: GH #162, GH #137, GH #164
  • FEATURES
    • CGI::Carp now has $CGI::Carp::FULL_PATH for displaying the full path to the offending script in error messages
    • CGI now has env_query_string() for getting the value of QUERY_STRING from the environment and not that fiddled with by CGI.pm (which is what query_string() does) (GH #161)
  • SPEC / BUG FIXES
    • Add the multi_param method to :cgi export (thanks to xblitz for the patch and tests. GH #167)
    • Fix warning for lack of HTTP_USER_AGENT in CGI::Carp (GH #168)
    • Fix imports when called from CGI::Fast, restores the import of CGI functions into the callers namespace for users of CGI::Fast (GH leejo/cgi-fast#11 and GH leejo/cgi-fast#12)
  • INTERNALS
    • Remove dependency on constant - internal DEBUG, XHTML_DTD and EBCDIC constants changes to $_DEBUG, $_XHTML_DTD, and $_EBCDIC
  • DOCUMENTATION
    • Add missing documentation for env variable fetching routines (GH #163)

Modules

CGI
Handle Common Gateway Interface requests and responses
CGI routines for writing to the HTTPD (or other) error log
Interface to HTTP Cookies
module to produce nicely formatted HTML code
Simple Interface to Server Push
Internal utilities used by CGI module

Provides

in lib/CGI/File/Temp.pm
Fh
in lib/Fh.pm
in lib/CGI.pm