Apache-ASP

 view release on metacpan or  search on metacpan

site/changes.html  view on Meta::CPAN

	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.61; $DATE="05/24/2008"</b></font>
<font face="courier new" size=3><pre>
 - updated for more recent mod_perl 2 environment to trigger correct loading of modules

 + loads modules in a backwards compatible way for older versions of mod_perl 1.99_07 to 1.99_09

 + license changes from GPL to Perl Artistic License
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2021803a342></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.59; $DATE="05/23/2005"</b></font>
<font face="courier new" size=3><pre>
 + added &quot;use bytes&quot; to Response object to calculate Content-Length
   correctly for UTF8 data, which should require therefore at least
   perl version 5.6 installed

 + updated to work with latest mod_perl 2.0 module naming convention,
   thanks to Randy Kobes for patch

 + examples now exclude usage of Apache::Filter &amp; Apache::SSI under mod_perl 2.0
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2022aa8a3f0></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.57; $DATE="01/29/2004"</b></font>
<font face="courier new" size=3><pre>
 - $Server-&gt;Transfer will update $0 correctly

 - return 0 for mod_perl handler to work with latest mod_perl 2 release
   when we were returning 200 ( HTTP_OK ) before

 - fixed bug in $Server-&gt;URL when called like $Server-&gt;URL($url)
   without parameters.  Its not clear which perl versions this bug 
   affected.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%202d9674a90></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.55; $DATE="08/09/2003"</b></font>
<font face="courier new" size=3><pre>
 - Bug fixes for running on standalone CGI mode on Win32 submitted
   by Francesco Pasqualini

 + Added Apache::ASP::Request::BINMODE for binmode() being
   called on STDIN after STDIN is tied to $Request object

 + New RequestBinaryRead configuration created, may be turned off
   to prevent $Request object from reading POST data

 ++ mod_perl 2 optmizations, there was a large code impact on this,
   as much code was restructured to reduce the differences between
   mod_perl 1 and mod_perl 2, most importantly, Apache::compat is
   no longer used

 + preloaded CGI for file uploads in the mod_perl environment

 - When XSLT config is set, $Response-&gt;Redirect() should work now
   Thanks to Marcus Zoller for pointing problem out

 + Added CookieDomain setting, documented, and added test to cover 
   it in t/cookies.t . Setting suggested by Uwe Riehm, who nicely 
   submitted some code for this.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2022c8082fb></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.53; $DATE="04/10/2003"</b></font>
<font face="courier new" size=3><pre>
 + XMLSubs tags with &quot;-&quot; in them will have &quot;-&quot; replaced with &quot;_&quot; or underscore, so a
   tag like &lt;my:render-table /&gt; will be translated to &amp;my::render_table() ... tags with
   - in them are common in extended XML syntaxes, but perl subs cannot have - in them only.

 + Clean setting now works on output when $Response-&gt;{ContentType} begins with text/html;
   like &quot;text/html; charset=iso-8859-2&quot; ... before Clean would only work on output marked
   with ContentType text/html.  Thanks to Szymon Juraszczyk for recommending fix.

 --Fixed a bug which would cause Session_OnEnd to be called twice on sessions in a certain case,
   particularly when an old expired session gets reused by and web browser... this bug was
   a result of a incomplete session cleanup method in this case.  Thanks to Oleg Kobyakovskiy 
   for reporting this bug.  Added test in t/session_events.t to cover this problem going forward.

 - Compile errors from Apache::ASP-&gt;Loader() were not being reported.  They will
   be reported again now.  Thanks to Thanos Chatziathanassiou for discovering and
   documenting this bug.  Added test in t/load.t to cover this problem going forward.

 + use of chr(hex($1)) to decode URI encoded parameters instead of pack(&quot;c&quot;,hex($1))
   faster &amp; more correct, thanks to Nikolay Melekhin for pointing out this need.

 (d) Added old perlmonth.com articles to ./site/articles in distribution
   and linked to them from the docs RESOURCES section

 (d) Updated documention for the $Application-&gt;SessionCount API

 + Scripts with named subroutines, which is warned against in the style guide,
   will not be cached to help prevent my closure problems that often
   hurt new developers working in mod_perl environments.  The downside
   is that these script will have a performance penalty having to be
   recompiled each invocation, but this will kill many closure caching 
   bugs that are hard to detect.

 - $Request-&gt;FileUpload(&#39;upload_file&#39;, &#39;BrowserFile&#39;) would return
   a glob before that would be the file name in scalar form.  However
   this would be interpreted as a reference incorrectly.  The fix
   is to make sure this is always a scalar by stringifying 
   this data internally.  Thanks to Richard Curtis for pointing
   out this bug.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2025b84bf7e></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.51; $DATE="02/10/2003"</b></font>
<font face="courier new" size=3><pre>
 + added t/session_query_parse.t test to cover use of SessionQueryParse
   and $Server-&gt;URL APIs

 - Fixed duplicate &quot;&amp;&quot; bug associated with using $Server-&gt;URL 
   and SessionQueryParse together

 + Patch to allow $Server-&gt;URL() to be called multiple times on the same URL
   as in $Server-&gt;URL($Server-&gt;URL($url, \%params), \%more_params)

site/changes.html  view on Meta::CPAN


 - When GlobalPackage config changes, but global.asa has not, global.asa
   will be recompiled anyway to update the GlobalPackage correctly.
   Changing GlobalPackage before would cause errors if global.asa was
   already compiled.

 ++ For ANY PerlSetVar type config, OFF/Off/off will be assumed 
    to have value of 0 for that setting.  Before, only a couple settings
    had this semantics, but they all do now for consistency.

 - Fix for InodeNames config on OpenBSD, or any OS that might have
   a device # of 0 for the file being stat()&#39;d, thanks to Peter Galbavy
   for bug report.

 ++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT

 + bypass meta data check like expires for XSLT Cache() API use
   because XSLT tranformations don&#39;t expire, saves hit to cache dbm
   for meta data

 + use of direct Apache::ASP::State methods like FETCH/STORE
   in Cache() layer so we don&#39;t have to go through slower tied interface.
   This will speed up XSLT &amp; and include output caching mostly.

 + minor optimizations for speed &amp; memory usage
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%202eaeef6e0></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.49; $DATE="11/10/2002"</b></font>
<font face="courier new" size=3><pre>
 -- bug introduced in 2.47 cached script compilations for executing
    scripts ( not includes ) of the same name in different directories
    for the same Global/GlobalPackage config for an application.
    Fix was to remove optimization that caused problem, and
    created test case t/same_name.t to cover bug.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%202a705193b></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.47; $DATE="11/06/2002"</b></font>
<font face="courier new" size=3><pre>
 ++ Runtime speed enhancements for 15-20% improvement including:
   + INTERNAL API ReadFile() now returns scalar ref as memory optimization
   + cache InodeNames config setting in ASP object now for common lookups
   + removed CompileChecksum() INTERNAL API, since it was an unnecesary
     method decomposition along a common code path
   + removed IsChanged() INTERNAL API since compiling of scripts
     is now handled by CompileInclude() which does this functionality already
   + removed unnecessary decomp of IncludesChanged() INTERNAL API, which was along
     critical code path
   + do not call INTERNAL SearchDirs() API when compiling base script
     since we have already validated its path earlier
   + Use stat(_) type shortcut for stat() &amp; -X calls where possible
   + Moved @INC initilization up to handler() &amp; consolidated with $INCDir lib
   + removed useless Apache::ASP::Collection::DESTROY
   + removed useless Apache::ASP::Server::DESTROY
   + removed useless Apache::ASP::GlobalASA::DESTROY
   + removed useless Apache::ASP::Response::DESTROY

 - Default path for $Response-&gt;{Cookies} was from CookiePath
   config, but this was incorrect as CookiePath config is only
   for $Session cookie, so now path for $Response-&gt;{Cookies}
   defaults to /

 - Fixed bug where global.asa events would get undefined with
   StatINC and GlobalPackage set when the GlobalPackage library
   changed &amp; get reloaded.

 (d) Documented long time config NoCache.

 -- Fixed use with Apache::Filter, capable as both source
    and destination filter.  Added <a href=eg/filter.filter>./site/eg/filter.filter</a> example
    to demonstrate these abilities.

 + Use $r-&gt;err_headers_out-&gt;add Apache::Table API for cookies 
   now instead of $r-&gt;cgi_header_out.  Added t/cookies.t test to 
   cover new code path as well as general $Response-&gt;Cookies API.
   Also make cookies headers sorted by cookie and dictionary key 
   while building headers for repeatable behavior, this latter was 
   to facilitate testing.

 - fixed $Server-&gt;Mail error_log output when failing to connect
   to SMTP server.

 + added tests to cover UniquePackages &amp; NoCache configs since this
   config logic was updated

 + made deprecated warnings for use of certain $Response-&gt;Member
   calls more loudly write to error_log, so I can remove the AUTOLOAD
   for Response one day

 - Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and
   added t/cgi_headers.t to cover this config.

 + removed $Apache::ASP::CompressGzip setting ability, used to possibly
   set CompressGzip in the module before, not documented anyway

 + removed $Apache::ASP::Filter setting ability to set Filter globally, 
   not documented anyway

 + removed old work around for setting ServerStarting to 0
   at runtime, which was bad for Apache::DBI on win32 a long
   time ago:

    $Apache::ServerStarting and $Apache::ServerStarting = 0;

   If this code is still needed in Apache::ASP-&gt;handler() let
   me know.

 + check to make sure data in internal database is a HASH ref
   before using it for session garbage collection.  This is to
   help prevent against internal database corruption in a 
   network share that does not support flock() file locking.

 + For new XMLSubs ASP type &lt;%= %&gt; argument interpolation
   activated with XMLSubsPerlArgs 0, data references can now
   be passed in addition to SCALAR/string references, so one
   can pass an object reference like so:

     &lt;my:tag value=&quot;&lt;%= $Object %&gt;&quot; /&gt;

   This will only work as long as the variable interpolation &lt;%= %&gt;
   are flushed against the containing &quot; &quot; or &#39; &#39;, or else the object
   reference will be stringified when it is concatenated with 
   the rest of the data.

   Testing for this feature was added to ./t/xmlsubs_aspargs.t

   This feature is still experimental, and its interface may change.
   However it is slated for the 3.0 release as default method,
   so feedback is appreciated.

 + For new XMLSubs ASP type &lt;%= %&gt; argument interpolation
   activated with XMLSubsPerlArgs 0, &lt;% %&gt; will no longer work,
   just &lt;%= %&gt;, as in 

     &lt;my:tag value=&quot;some value &lt;%= $value %&gt; more data&quot; /&gt;

site/changes.html  view on Meta::CPAN


  Like the XSLTCache, it uses MLDBM::Sync::SDBM_File
  by default, but can use DB_File or GDBM_File if
  CacheDB is set to these.

  See t/cache.t for API support until this is documented.

 +CacheSize now supports units of M, K, B like 

   CacheSize 10M
   CacheSize 10240K
   CacheSize 10000000B
   CacheSize 10000000

 -Better handling of $Session-&gt;Abandon() so multiple
  request to the same session while its being destroyed
  will have the right effect.

 +Optimized XMLSubs parsing.  Scripts with lots lof XMLSubs 
  now parse faster for the first time.  One test script with 
  almost 200 such tags went from a parse time of around 3 seconds
  to .7 seconds after optimizations.

 +Updated performance tuning docs, particularly for using
  Apache::ASP-&gt;Loader()

 +$Server-&gt;URL($url, \%params) now handles array refs
  in the params values like
    $Server-&gt;URL($url, { key =&gt; [ qw( value1 value2 ) ] })

  This is so that query string data found in 
  $Request-&gt;QueryString that gets parsed into this form
  from a string like: ?key=value&amp;key=value2 would be 
  able to be reused passed back to $Server-&gt;URL to 
  create self referencing URLs more easily.

 -Bug fix where XMLSubs like &lt;s:td /&gt; now works on perl 
  5.005xx, thanks to Philip Mak for reporting &amp; fix.

 +When searching for included files, will now join
  the absolute path of the directory of the script
  with the name of the file if its a relative file
  name like ./header.inc.  Before, would just look
  for something like ././header.inc by using &#39;.&#39;
  as the first directory to look for includes in.

  The result of this is that scripts in two directories
  configured with the same Global setting should be able
  to have separate local header.inc files without causing
  a cached namespace collision.

 +$Server-&gt;Config() call will return a hash ref 
  to all the config setting for that request, like
  Apache-&gt;dir_config would.

 -StatINC setting with Apache::ASP-&gt;Loader() works again.
  This makes StatINC &amp; StatINCMatch settings viable 
  for production &amp; development use when the system has
  very many modules.

 -Cookieless session support with configs like SessionQueryParse
  and SessionQuery now work for URLs with frags in them
  like <tt>http://localhost?arg=value#frag</tt>

 +@rv = $Response-&gt;Include() now works where there are
  multiple return values from an include like:
  &lt;% return(1,2); %&gt;
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%202c37caa32></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.21; $DATE="8/5/2001";</b></font>
<font face="courier new" size=3><pre>
 +Documented RequestParams config in CONFIG misc section.

 +Documented new XSLT caching directives.

 +Updated <a href=eg/.htaccess>./site/eg/.htaccess</a> XSLT example config
  to use XSLTCache setting.

 +New FAQ section on why perl variables are sticky globals,
  suggested by Mark Seger.

 -push Global directory onto @INC during ASP script execution
  Protect contents of original @INC with local.  This makes
  things compatible with .09 Apache::ASP where we always had
  Global in @INC.  Fixed needed by Henrik Tougaard

 - ; is a valid separator like &amp; for QueryString Parameters
  Fixed wanted by Anders

 -XSMLSubsMatch doc fix in CONFIG section

 +Reduces number of Session groups to 16 from 32, so 
  session manager for small user sets will be that much faster.

 +optimizations for internal database, $Application, and $Session
  creation.

 +XSLTCache must be set for XSLT caching to begin using CacheDir

 +CacheDB like StateDB bug sets dbm format for caching, which
  defaults to MLDBM::Sync::SDBM_File, which works well for caching
  output sizes &lt; 50K

 +CacheDir config for XSLT caching ... defaults to StateDir

 +CacheSize in bytes determines whether the caches in CacheDir
  are deleted at the end of the request.  A cache will be 
  reset in this way back to 0 bytes. Defaults to 10000000 bytes
  or about 10M.

 +Caching infrastructure work that is being used in XSLT
  can be leveraged later for output caching of includes,
  or arbitrary user caching.

 -t/server_mail.t test now uses valid email for testing
  purposes ... doesn&#39;t actually send a mail, but for SMTP
  runtime validation purposes it should be OK.

 +fixed where POST data was read from under MOD_PERL,

site/changes.html  view on Meta::CPAN

 -XSLTCacheSize config no longer supported.  Was a bad 
  Tie::Cache implementation.  Should be file based cache
  to greatly increases cache hit ratio.

 ++$Response-&gt;Include(), $Response-&gt;TrapInclude(),
  and $Server-&gt;Execute() will all take a scalar ref
  or \&#39;asdfdsafa&#39; type code as their first argument to execute 
  a raw script instead of a script file name.  At this time, 
  compilation of such a script, will not be cached.  It is 
  compiled/executed as an anonymous subroutine and will be freed
  when it goes out of scope.

 + -p argument to cgi/asp script to set GlobalPackage
  config for static site builds

 -pod commenting fix where windows clients are used for 
  ASP script generation.

 +Some nice performance enhancements, thank to submissions from
  Ime Smits.  Added some 1-2% per request execution speed.

 +Added StateDB MLDBM::Sync::SDBM_File support for faster
  $Session + $Application than DB_File, yet still overcomes
  SDBM_File&#39;s 1024 bytes value limitation.  Documented in 
  StateDB config, and added Makefile.PL entry.

 +Removed deprecated MD5 use and replace with Digest::MD5 calls

 +PerlSetVar InodeNames 1 config which will compile scripts hashed by 
  their device &amp; inode identifiers, from a stat($file)[0,1] call.
  This allows for script directories, the Global directory,
  and IncludesDir directories to be symlinked to without
  recompiling identical scripts.  Likely only works on Unix
  systems.  Thanks to Ime Smits for this one.

 +Streamlined code internally so that includes &amp; scripts were
  compiled by same code.  This is a baby step toward fusing
  include &amp; script code compilation models, leading to being
  able to compile bits of scripts on the fly as ASP subs, 
  and being able to garbage collect ASP code subroutines.

 -removed @_ = () in script compilation which would trigger warnings 
  under PerlWarn being set, thanks for Carl Lipo for reporting this.

 -StatINC/StatINCMatch fix for not undeffing compiled includes
  and pages in the GlobalPackage namespace

 -Create new HTML::FillInForm object for each FormFill
  done, to avoid potential bug with multiple forms filled
  by same object.  Thanks to Jim Pavlick for the tip.

 +Added PREREQ_PM to Makefile.PL, so CPAN installation will
  pick up the necessary modules correctly, without having
  to use Bundle::Apache::ASP, thanks to Michael Davis. 

 + &gt; mode for opening lock files, not &gt;&gt;, since its faster

 +$Response-&gt;Flush() fixed, by giving $| = 1 perl hint
  to $r-&gt;print() and the rest of the perl sub.

 +$Response-&gt;{Cookies}{cookie_name}{Expires} = -86400 * 300;
  works so negative relative time may be used to expire cookies.

 +Count() + Key() Collection class API implementations

 +Added editors/aasp.vim VIM syntax file for Apache::ASP,
  courtesy of Jon Topper.

 ++Better line numbering with #line perl pragma.  Especially
  helps with inline includes.  Lots of work here, &amp; integrated
  with Debug 2 runtime pretty print debugging.

 +$Response-&gt;{Debug} member toggles on/off whether 
  $Response-&gt;Debug() is active, overriding the Debug setting
  for this purpose.  Documented.

 -When Filter is on, Content-Length won&#39;t be set and compression
  won&#39;t be used.  These things would not work with a filtering
  handler after Apache::ASP
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%202023e855d></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 2.09; $DATE="01/30/2001";</b></font>
<font face="courier new" size=3><pre>
 +Examples in ./site/eg are now UseStrict friendly.  
  Also fixed up <a href=eg/ssi_filter.ssi>./site/eg/ssi_filter.ssi</a> example.

 +Auto purge of old stale session group directories, increasing 
  session manager performance when using Sessions when migrating
  to Apache::ASP 2.09+ from older versions.

 +SessionQueryParse now works for all $Response-&gt;{ContentType}
  starting with &#39;text&#39; ... before just worked with text/html,
  now other text formats like wml will work too. 

 +32 groups instead of 64, better inactive site session group purging.

 +Default session-id length back up to 32 hex bytes.
  Better security vs. performance, security more important,
  especially when performance difference was very little.

 +PerlSetVar RequestParams 1 creates $Request-&gt;Params
  object with combined contents of $Request-&gt;QueryString
  and $Request-&gt;Form

 ++FormFill feature via HTML::FillInForm.  Activate with
  $Response-&gt;{FormFill} = 1 or PerlSetVar FormFill 1
  See site/eg/formfill.asp for example.

 ++XMLSubs tags of the same name may be embedded in each other
  recursively now.

 +No umask() use on Win32 as it seems unclear what it would do

 +simpler Apache::ASP::State file handle mode of &gt;&gt; when opening 
  lock file.  saves doing a -e $file test.

 +AuthServerVariables config to init $Request-&gt;ServerVariables
  with basic auth data as documented.  This used to be default
  behavior, but triggers &quot;need AuthName&quot; warnings from recent

site/changes.html  view on Meta::CPAN

  and modules namespaces.

  A couple tweaks, and now StatINC &amp; CGI play nice again ;)
  StatINCMatch should be safe to use in production with CGI. 
  This affects in particular environments that use file upload, 
  since CGI is loaded automatically by Apache::ASP to handle 
  file uploads.

  This fix should also affect other seemingly random 
  times when StatINC or StatINCMatch don&#39;t seem to do 
  the right thing.

 +use of ASP objects like $Response are now &quot;use strict&quot;
  safe in scripts, while UniquePackages config is set.

 +Better handling of &quot;use strict&quot; errors in ASP scripts.
  The error is detected, and the developer is pointed to the 
  Apache error log for the exact error.  

  The script with &quot;use strict&quot; errors will be recompiled again.  Its seems 
  though that &quot;use strict&quot; will only throw its error once, so that a script 
  can be recompiled with the same errors, and work w/o any use strict
  error messaging.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200fcc7c76f></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.12; $DATE="07/01/1999";</b></font>
<font face="courier new" size=3><pre>
 -Compiles are now 10 +times faster for scripts with lots of big
  embedded perl blocks &lt;% #perl %&gt;

  Compiles were slow because of an old PerlScript compatibility
  parsing trick where $Request-&gt;QueryString(&#39;hi&#39;)-&gt;{item}
  would be parsed to $Request-&gt;QueryString(&#39;hi&#39;) which works.
  I think the regexp that I was using had O(n^2) characteristics
  and it took a really big perl block to 10 +seconds to parse
  to understand there was a problem :(

  I doubt anyone needed this compatibility, I don&#39;t even see
  any code that looks like this in the online PerlScript examples,
  so I&#39;ve commented out this parsing trick for now.  If you 
  need me to bring back this functionality, it will be in the 
  form of a config setting.

  For information on PerlScript compatibility, see the PerlScript
  section in the ASP docs.

 -Added UniquePackages config option, that if set brings back 
  the old method of compiling each ASP script into its own
  separate package.  As of v.10, scripts are compiled by default
  into the same package, so that scripts, dynamic includes &amp; global.asa
  can share globals.  This BROKE scripts in the same ASP Application
  that defined the same sub routines, as their subs would redefine
  each other.  

  UniquePackages has scripts compiled into separate perl packages,
  so they may define subs with the same name, w/o fear of overlap.
  Under this settings, scripts will not be able to share globals.  

 -Secure field for cookies in $Response-&gt;Cookies() must be TRUE to 
  force cookie to be secure.  Before, it just had to be defined, 
  which gave wrong behavior for Secure =&gt; 0. 

 +$Response-&gt;{IsClientConnected} set to one by default.  Will
  work out a real value when I upgrade to apache 1.3.6.  This
  value has no meaning before, as apache aborts the perl code
  when a client drops its connection in earlier versions.

 +better compile time debugging of dynamic includes, with 
  Debug 2 setting

 +&quot;use strict&quot; friendly handling of compiling dynamic includes
  with errors
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200bd024b52></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.11; $DATE="06/24/1999";</b></font>
<font face="courier new" size=3><pre>
 +Lots of documentation updates

 +The MailHost config option is the smtp server used for 
  relay emails for the Mail* config options.

 +MailAlertTo config option used for sending a short administrative
  alert for an internal ASP error, server code 500.  This is the 
  compliment to MailErrorsTo, but is suited for sending a to a
  small text based pager.  The email sent by MailErrorsTo would
  then be checked by the web admin for quick response &amp; debugging
  for the incident. 

  The MailAlertPeriod config specifies the time in minutes during 
  which only one alert will be sent, which defaults to 20.

 +MailErrorsTo config options sends the results of a 500 error
  to the email address specified as if Debug were set to 2.
  If Debug 2 is set, this config will not be on, as it is
  for production use only.  Debug settings less than 2 only 
  log errors to the apache server error log.

 -StatINCMatch / StatINC can be used in production and work
  even after a server graceful restart, which is essential for 
  a production server.

 -Content-Length header is set again, if BufferingOn is set, and
  haven&#39;t $Response-&gt;Flush()&#39;d.  This broke when I introduce
  the Script_OnEnd event handler.

 +Optimized reloading of the GlobalPackage perl module upon changes, 
  so that scripts and dynamic includes don&#39;t have to be recompiled.  
  The global.asa will still have to be though.  Since we started
  compiling all routines into a package that can be named with
  GlobalPackage, we&#39;ve been undeffing compiled scripts and includes
  when the real GlobalPackage changed on disk, as we do a full sweep
  through the namespace.  Now, we skip those subs that we know to 
  be includes or scripts. 

 -Using Apache::Symbol::undef() to undefine precompiled scripts
  and includes when reloading those scripts.  Doing just an undef() 
  would sometimes result in an &quot;active subroutine undef&quot; error.

site/changes.html  view on Meta::CPAN

 +Using pod style commenting no longer confuses the line
  numbering.  ASP script line numbers are almost exactly match
  their compiled perl version, except that normal inline includes
  (not dynamic) insert extra text which can confuse line numbering.
  If you want perl error line numbers to entirely sync with your 
  ASP scripts, I would suggest learning how to use dynamic includes,
  as opposed to inline includes.

 -Wrapped StatINC reloading of libs in an eval, and capturing
  error for Debug 2 setting.  This makes changing libs with StatINC
  on a little more friendly when there are errors. 

 -$Request-&gt;QueryString() now stores multiple values for the 
  same key, just as $Request-&gt;Form() has since v.07.  In
  wantarray() context like @vals = $Request-&gt;QueryString(&#39;dupkey&#39;),
  @vals will store whatever values where associated with dupkey
  in the query string like (1,2) from: ?dupkey=1&amp;dupkey=2

 +The GlobalPackage config directive may be defined
  to explicitly set the perl module that all scripts and global.asa
  are compiled into.

 -Dynamic includes may be in the Global directory, just like
  normal includes.

 +Perl script generated from asp scripts should match line
  for line, seen in errors, except when using inline (default) 
  includes, pod comments, or &lt;% #comment %&gt; perl comments, which 
  will throw off the line counts by adding text, removing
  text, or having an extra newline added, respectively.

 -Script_OnEnd may now send output to the browser.  Before
  $main::Response-&gt;End() was being called at the end of the
  main script preventing further output.
</pre></font>++All scripts are compiled as routines in a namespace uniquely
<font face="courier new" size=3><pre>  defined by the global.asa of the ASP application.  Thus,
  scripts, includes, and global.asa routines will share
  all globals defined in the global.asa namespace.   This means
  that globals between scripts will be shared, and globals
  defined in a global.asa will be available to scripts.

  Scripts used to have their own namespace, thus globals
  were not shared between them.

 +a -o $output_dir switch on the ./cgi/asp script allows
  it to execute scripts and write their output to an output
  directory.  Useful for building static html sites, based on
  asp scripts.  An example use would be:

    asp -b -o out *.asp

  Without an output directory, script output is written to STDOUT
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2005ee189f2></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.09; $DATE="04/22/1999";</b></font>
<font face="courier new" size=3><pre>
 +Updated Makefile.PL optional modules output for CGI &amp; DB_File

 +Improved docs on $Response-&gt;Cookies() and $Request-&gt;Cookies()

 +Added PERFORMANCE doc to main README, and added sub section
  on precompiling scripts with Apache::ASP-&gt;Loader()

 +Naming of CompileIncludes switched over to DynamicIncludes 
  for greater clarity.

 +Dynamic includes can now reference ASP objects like $Session
  w/o the $main::* syntax.  These subs are no longer anonymous
  subs, and are now compiled into the namespace of the global.asa package.

 +Apache::ASP-&gt;Loader() precompiles dynamic includes too. Making this work
  required fixing some subtle bugs / dependencies in the compiling process.

 +Added Apache::ASP-&gt;Loader() similar to Apache::RegistryLoader for
  precompiling ASP scripts.  Precompile a whole site at server 
  startup with one function call.

 +Prettied the error messaging with Debug 2.

 +$Response-&gt;Debug(@args) debugging extension, which
  allows a developer to hook into the module&#39;s debugging,
  and only have @args be written to error_log when Debug is greater
  than 0.

 -Put write locking code around State writes, like $Session
  and $Application.  I thought I fixed this bug a while ago.

 -API change: converted $Session-&gt;Timeout() and $Session-&gt;SessionID() 
  methods into $Session-&gt;{Timeout} and $Session-&gt;{SessionID} properties.
  The use of these properties as methods is deprecated, but 
  backwards compatibility will remain.  Updated ./eg/session.asp
  to use these new properties.

 +Implemented $Response-&gt;{PICS} which if set sends out a PICS-Label
  HTTP header, useful for ratings.

 +Implemented $Response-&gt;{CacheControl} and $Response-&gt;{Charset} members.
  By default, CacheControl is &#39;private&#39;, and this value gets sent out
  every request as HTTP header Cache-Control.  Charset appends itself
  onto the content type header.

 +Implemented $Request-&gt;BinaryRead(), $Request-&gt;{TotalBytes},
  documented them, and updated ./eg/form.asp for an example usage. 

 +Implemented $Response-&gt;BinaryWrite(), documented, and created
  and example in ./eg/binary_write.htm

 +Implemented $Server-&gt;MapPath() and created example of its use
  in ./eg/server.htm

 -$Request-&gt;Form() now reads file uploads correctly with 
  the latest CGI.pm, where $Request-&gt;Form(&#39;file_field&#39;) returns
  the actual file name uploaded, which can be used as a file handle
  to read in the data.  Before, $Request-&gt;Form(&#39;file_field&#39;) would
  return a glob that looks like *Fh::filename, so to get the file
  name, you would have to parse it like =~ s/^\*Fh\:\://,
  which you no longer have to do.  As long as parsing was done as
  mentioned, the change should be backwards compatible.

site/changes.html  view on Meta::CPAN

 +Reworked ./eg/cgi.htm example to use CGI input routines
  after doing a native read of STDIN.

 ++Added dynamic includes with &lt;!--include file=file args=@args--&gt;
  extension.  This style of include is compiled as an anonymous sub &amp; 
  cached, and then executed with @args passed to the subroutine for 
  execution.  This is include may also be rewritten as a new API 
  extension: $Response-&gt;Include(&#39;file&#39;, @args)

 +Added ./eg/compiled_includes.htm example documenting new dynamic includes.

 +Documented SSI: native file includes, and the rest with filtering 
  to Apache::SSI

 +Turned the documentation of Filter config to value of Off so 
  people won&#39;t cut and paste the On config by default.

 +Added SecureSession config option, which forces session cookie to 
  be sent only under https secured www page requests.

 +Added StateDB config option allows use of DB_File for $Session, since 
  default use of SDBM_File is limited.  See StateDB in README.

 +file include syntax w/o quotes supported like &lt;!--#include file=test.inc--&gt;

 +Nested includes are supported, with includes including each other.
  Recursive includes are detected and errors out when an include has been 
  included 100 times for a script.  Better to quit early than 
  have a process spin out of control. (PORTABLE ? probably not)

 +Allow &lt;!--include file=file.inc--&gt; notation w/o quotes around file names

 -PerlSetEnv apache conf setting now get passed through to 
  $Request-&gt;ServerVariables. This update has ServerVariables 
  getting data from %ENV instead of $r-&gt;cgi_env

 +README FAQ for PerlHandler errors
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200ea85a09a></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.08; $DATE="02/06/1999";</b></font>
<font face="courier new" size=3><pre>
 ++SSI with Apache::Filter &amp; Apache::SSI, see config options &amp; ./eg files
  Currently filtering only works in the direction Apache::ASP -&gt; Apache::SSI,
  will not work the other way around, as SSI must come last in a set of filters

 +SSI file includes may reference files in the Global directory, better 
  code sharing

 - &lt;% @array... %&gt; no longer dropped from code.

 +perl =pod comments are stripped from script before compiling, and associated
  PodComments configuration options.

 +Command line cgi/asp script takes various options, and allows execution
  of multiple asp scripts at one time.  This script should be used for
  command line debugging.  This is also the beginning of building
  a static site from asp scripts with the -b option, suppressing headers.

 +$Response-&gt;AddHeader(&#39;Set-Cookie&#39;) works for multiple cookies.

 -$Response-&gt;Cookies(&#39;foo&#39;, &#39;0&#39;) works, was dropping 0 because of boolean test

 -Fixed up some config doc errors.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2003960e08a></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.07; $DATE="01/20/1999";</b></font>
<font face="courier new" size=3><pre>
 -removed SIG{__WARN__} handler, it was a bad idea.

 -fixes file locking on QNX, work around poor flock porting

 +removed message about Win32::OLE on UNIX platforms from Makefile.PL

 -Better lock garbage collection.  Works with StatINC seamlessly.

 -Multiple select forms now work in array context with $Response-&gt;Form()
	@values = $Response-&gt;Form(&#39;multi&#39;);

 -Better CGI.pm compatibility with $r-&gt;header_out(&#39;Content-type&#39;),
  improved garbage collection under modperl, esp. w/ file uploads
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200394bbc7f></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.06; $DATE="12/21/1998";</b></font>
<font face="courier new" size=3><pre>
 +Application_OnStart &amp; Application_OnEnd event handlers support.

 -Compatible with CGI.pm 2.46 headers() 

 -Compatible with CGI.pm $q = new CGI({}), caveat: does not set params 

 +use strict; followed by use of objects like $Session is fine.

 -Multiple cookies may be set per script execution.

 +file upload implemented via CGI.pm

 ++global.asa implemented with events Session_OnStart and Session_OnEnd
  working appropriately.

 +StateDir configuration directive implemented.
  StateDir allows the session state directory to be specified separately 
  from the Global directory, useful for operating systems with caching file 
  systems.

 +StateManager config directive.  StateManager specifies how frequently
  Sessions are cleaned up, with 10 (default) meaning that old Sessions
  will be cleaned up 10 times per SessionTimeout period (default 20 minutes).

 +$Application-&gt;SessionCount() implemented, non-portable method.
	: returns the number of currently active sessions

 -STOP button fix.  Users may hit STOP button during script 
  execution, and Apache::ASP will cleanup with a routine registered
  in Apache&#39;s $r-&gt;register_cleanup.  Works well supposedly.

 +PerlScript compatibility work, trying to make ports smoother.
	: Collection emulator, no -&gt;{Count} property

site/changes.html  view on Meta::CPAN

 +Added PERFORMANCE doc, which includes benchmarks  +hints.

 +Better installation warnings and errors for other modules required. 

 -Turned off StatINC in eg/.htaccess, as not everyone installs Devel::Symdump

 -Fixed AUTOLOAD state bug, which wouldn&#39;t let you each through state
  objects, like %{$Session}, or each %$Session, (bug introduced in v.04)

 +Parses ASP white space better.  HTML output matches author&#39;s intent
  by better dealing with white space surrounding &lt;% perl blocks %&gt;

 -Scalar insertion code &lt;%=$foo%&gt; can now span many lines.

 +Added include.t test script for includes.

 +Script recompiles when included files change.

 +Files can be included in script with 
  SSI &lt;!--#include file=&quot;filename&quot;--&gt; syntax, needs to be
  done in ASP module to allow compilation of included code and html 
  into script.  Future chaining with Apache::SSI will allow static 
  html includes, and other SSI directives
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2009ffce1f9></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.04; $DATE="10/14/1998";</b></font>
<font face="courier new" size=3><pre>
 +Example script eg/cgi.htm demonstrating CGI.pm use for output.

 +Optimized ASP parsing, faster and more legible executing code
	: try &#39;die();&#39; in code with setting PerlSetVar Debug 2

 +Cleaned up code for running with &#39;use strict&#39;

 -Fixed directory handle leak on Solaris, from not closing after opendir()

 +StatINC overhaul.  StatINC setting now works as it should, with 
  the caveat that exported functions will not be refreshed.

 +NoState setting optimization, disallows $Application &amp; $Session

 +$Application-&gt;*Lock() functions implemented

 -SoftRedirect setting for those who want scripts to keep running
  after a Redirect()

 +SessionSerialize setting to lock session while script is running
	: Microsoft ASP style session locking
	: For a session, scripts execute one at a time 
	: NOT recommended use, please see note.

 -MLDBM can be used for other things without messing up internal use
	: before if it was used with different DB&#39;s and serializers,
	  internal state could be lost.

 --State file locking.  Corruption worries, and loss of data no more.

 +CGI header support, developer can use CGI.pm for *output*, or just print()
	: print &quot;Set-Cookie: test=cookie\n&quot;, and things will just work
	: use CGI.pm for output
	: utilizes $r-&gt;send_cgi_header(), thanks Doug!

 +Improved Cookie implementation, more flexible and complete
	- Domain cookie key now works
	: Expire times now taken from time(), and relative time in sec
	: Request-&gt;Cookies() reading more flexible, with wantarray()
	  on hash cookie values, %hash = $Request-&gt;Cookie(&#39;test&#39;);

 -make test module naming correction, was t.pm, now T.pm for Unix

 +POD / README cleanup, formatting and HTML friendly.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200ec664faf></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.03; $DATE="09/14/1998";</b></font>
<font face="courier new" size=3><pre>
 +Installation &#39;make test&#39; now works

 +ActiveX objects on Win32 implemented with $Server-&gt;CreateObject() 

 +Cookies implemented: $Response-&gt;Cookies() &amp; $Request-&gt;Cookies()

 -Fixed $Response object API, converting some methods to object members.
  Deprecated methods, but backwards compatible.

 +Improved error messaging, debug output

 +$, influences $Response-&gt;Write(@strings) behavior

 +perl print() works, sending output to $Response object

 +$Response-&gt;Write() prints scalars, arrays, and hashes.  Before only scalars.

 +Begin implementation of $Server object.

 +Implemented $Response-&gt;{Expires} and $Response-&gt;{ExpiresAbsolute}

 +Added &quot;PerlSetVar StatINC&quot; config option

 +$0 is aliased to current script filename

 +ASP Objects ($Response, etc.) are set in main package
  Thus notation like $main::Response-&gt;Write() can be used anywhere.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%20055b248f9></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.02; $DATE="07/12/1998";</b></font>
<font face="courier new" size=3><pre>
 ++Session Manager, won&#39;t break under denial of service attack

 +Fleshed out $Response, $Session objects, almost full implementation.

 +Enormously more documentation.

 -Fixed error handling with Debug = 2.

 -Documentation fixed for pod2man support.  README now more man-like.

 -Stripped \r\n dos characters from installation files

 -755 mode set for session state directory when created

 -Loads Win32/OLE properly, won&#39;t break with UNIX
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2009faee67f></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.01; $DATE="06/26/1998";</b></font>
<font face="courier new" size=3><pre>
 Syntax Support
 --------------
 Initial release, could be considered alpha software.
 Allows developers to embed perl in html ASP style.

 &lt;!-- sample here --&gt;
 &lt;html&gt;
 &lt;body&gt;
 &lt;% for(1..10) { %&gt;
 	counting: &lt;%=$_%&gt; &lt;br&gt;
 &lt;% } %&gt;



( run in 0.638 second using v1.01-cache-2.11-cpan-e1769b4cff6 )