We are currently performing a project to convert from ActivePerl/IIS to Apache::ASP and have
run across issues with variables behaving strangely.  After searching the web, I have a couple
of issues I would like some advice on.

1. Variable scope ...

>From the Apache::ASP page (Style Guide):
"One of perl's blessings is also its bane, variables do not need to be declared, and are by default globally scoped. The problem with this in mod_perl is that global variables persist from one request to another even if a different web browser is viewing a page."

Our problem is the original authors of the code assumed variables are not globally scoped.

Q1.1: How come in other languages, the scope of the variable is assumed to be for the page unless
defined otherwise (e.g. PHP, ActivePerl, VBScript)?
Q1.2: Is there a configuration option or easy way around this issue?


2. Subroutines ...

>From the Apache::ASP page (Style Guide):
"DO NOT add subroutine declarations in scripts. Apache::ASP is optimized by compiling a script into a subroutine for faster future invocation."

We have ActivePerl Perlscript pages with
[sample.asp]
<%@ LANGUAGE = PerlScript%>
<!--#include virtual=[include.asp]-->

<%
my $foo = 1;
my $bar = 2;

my ($value) = &getValue($foo, $bar);

$Response->Write("Value = $value<br>\n");

%>
[end sample.asp]

[contents of include.asp]

<%

sub getValue
{
	my ($foo, $bar) = @_;
	
	my $value = $foo * $bar;

	return $value;
}

%>
[end include.asp]

Q2.1: Since this sub is included in sample.asp, is it considered a subroutine within a subroutine?
Q2.2: Is there an easy way to convert include.asp to include.pm so I can use "use include.pm" in our scripts?
Q2.3: Does Apache::ASP support #include virtual=...?  It only seems to work with #include file=...



Reply via email to