this may be a dumb patch to Apache::ASP (at least it is my first).
Rationale:
i have the following issues with the current implementation of $Application
1. everything you store in $Application->{foo} must be
serializable my MLDBM. (right?) i have SWIG'd c++ classes for
which this will not work.
2. limitation #1 seems to limit Apache:ASP's usefulness as a
cross-platform solution to ActivePerl/IIS/ASP scripts you
want to move to linux, etc. i want to do this - not sure if
this is really a key thing for joshua though...
So the following patch (which i really hope joshua comments on ;)
fixes my problems (or so it seems). i've made an $Application2 object
which uses the implementation from the mod_perl guide to make a
global variable accessible by all scripts. (i'd love for this to become
the real $Application). It doesn't do everything else $Application
does at this point, but does demonstrate the idea & works on my SWIG'd
c++ stuff.
i'd love to know if i'm totally of the wall or how to improve this
idea. seems like it would be faster, more like IIS/ASP, and remove
the serializable requirement, although it would jack up memory
requirements i would imagine. i'd be glad to incorporate any suggested
improvements to make it acceptable to Joshua for inclusion in
Apache::ASP...
--- ASP.pm Thu Feb 3 20:35:08 2000
+++ /usr/lib/perl5/site_perl/5.005/Apache/ASP.pm Tue Mar 28 16:00:19 2000
@@ -1154,6 +1154,8 @@
# "use vars qw(\$".join(" \$",@Apache::ASP::Objects).');',
"sub $subid { ",
' return(1) unless $_[0]; ', #@_ = ();',
+ "use vars qw(%Application2);",
+ "*Application2 = \\%Apache::ASP::InMemoryApplicationObject::Application2;",
$$script,
'}',
);
@@ -2115,6 +2117,8 @@
$strict,
"use vars qw(\$".join(" \$",@Apache::ASP::Objects).');',
"use lib qw($self->{asp}->{global});",
+ "use vars qw(%Application2);",
+ "*Application2 =
+\\%Apache::ASP::InMemoryApplicationObject::Application2;",
$code,
'sub exit { $main::Response->End(); } ',
'1;',
@@ -4464,6 +4468,13 @@
sub connection { shift; }
+1;
+
+package Apache::ASP::InMemoryApplicationObject;
+ use strict;
+ use vars qw(%Application2);
+ %Application2 = (
+ );
1;
__END__
--
------------------------------------------------------------------------
Joel W. Reed http://ruby.ddiworld.com/jreed
--------Daddy, why doesn't this magnet pick up this floppy disk?--------