ASP
view release on metacpan or search on metacpan
Escapes (URL-encodes) a list. Uses ASP object method
$Server->URLEncode().
=cut
sub escape { map { $main::Server->URLEncode($_) } @_; }
=head2 unescape LIST
Unescapes a URL-encoded list. Algorithms ripped from CGI.pm
method of the same name.
=cut
sub unescape {
map {
tr/+/ /;
s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
} @_;
}
=head2 escapeHTML LIST
Escapes a list of HTML. Uses ASP object method $Server->HTMLEncode().
If passed an array reference, escapeHTML will return a reference
to the escaped array.
=cut
sub escapeHTML {
my ($flag, @args) = (0, @_);
@args = @{$args[0]} and $flag++ if ref $args[0] eq "ARRAY";
$_ = $main::Server->HTMLEncode($_) for @args;
$flag ? \@args : @args;
}
=head2 unescapeHTML LIST
Unescapes an HTML-encoded list.
If passed an array reference, unescapeHTML will return a reference
to the un-escaped array.
=cut
sub unescapeHTML {
my ($flag, @args) = (0, @_);
@args = @{$args[0]} and $flag++ if ref $args[0] eq "ARRAY";
map {
s/&/&/gi;
s/"/"/gi;
s/ / /gi;
s/>/>/gi;
s/</</gi;
s/&#(\d+);/chr($1)/ge;
s/&#x([0-9a-f]+);/chr(hex($1))/gi;
} @args;
$flag ? \@args : @args;
}
=head2 param EXPR [, EXPR]
Simplifies parameter access and makes switch from GET to POST transparent.
Given the following querystring:
myscript.asp?x=a&x=b&y=c
param() returns ('x', 'y')
param('y') returns 'c'
param('x') returns ('a', 'b')
param('x',1) returns 'a'
param('x',2) returns 'b'
NOTE: Under Apache::ASP, param() simply passes the arguments
to CGI::param() because Apache::ASP doesn't support the $obj->{Count}
property used in this function.
=cut
sub param {
if ($APACHE) {
return (wantarray) ? (CGI::param(@_)) : scalar(CGI::param(@_));
}
unless (@_) {
my @keys;
push( @keys, $_ ) for ( Win32::OLE::in $main::Request->QueryString );
push( @keys, $_ ) for ( Win32::OLE::in $main::Request->Form );
return @keys;
}
$_[1] = 1 unless defined $_[1];
unless (wantarray) {
if ($main::Request->ServerVariables('REQUEST_METHOD')->Item eq 'GET') {
return $main::Request->QueryString($_[0])->Item($_[1]);
} else {
return $main::Request->Form($_[0])->Item($_[1]);
}
} else {
my ($i, @ret);
if ($main::Request->ServerVariables('REQUEST_METHOD')->Item eq 'GET') {
my $count = $main::Request->QueryString($_[0])->{Count};
for ($i = 1; $i <= $count; $i++ ) {
push @ret, $main::Request->QueryString($_[0])->Item($i);
}
} else {
my $count = $main::Request->Form($_[0])->{Count};
for ($i = 1; $i <= $count; $i++) {
push @ret, $main::Request->Form($_[0])->Item($i);
}
}
return @ret;
}
}
=head2 param_count EXPR
Returns the number of times EXPR appears in the request (Form or
QueryString).
For example, if URL is
myscript.asp?x=a&x=b&y=c
then
( run in 2.990 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )