long version--
okay, i'm confused, and this time it's not related to cookies.
it happens to be the same bloinkin' project, but this time it's
perl in general, that's got me baffled...
if have a subroutine that's defined, but it's not showing up as
defined. i used the *Symbol::Table::name{CODE} method myself and
sure enough, there's no CODE for the defined subroutine...
here's my debug snippet, in context--
###########################################
package My::Access;
# File: My/Access.pm
use strict;
use Apache::Constants qw(OK SERVER_ERROR);
use Apache::TicketTool;
use Apache::Log;
sub handler {
my $r = shift;
{
no strict;
# see camel book, page 282
my $x = '';
my @key = qw(
SCALAR ARRAY HASH
CODE FILEHANDLE
); # ignore GLOB, PACKAGE, NAME
foreach my $item ( sort keys %My::Access:: ) {
my $descr = '';
foreach ( @key ) {
$descr .= "\t$_\n"
if defined( *{$item}{$_} );
}
$x .= "$item\n$descr";
}
#$r->log->debug('My::Access::handler -- ' . join '/',grep
*{$_}{CODE},sort keys %My::Access::);
$r->log->debug("My::Access::handler -- \n$x");
}
if ( &needs_login($r) ) {
if ( &logging_in($r) ) {
# currently trying to log in (user/password supplied)
$r->log->debug('My::Access::handler logging in
(PerlHandler=>checkUser())');
my $h = $r->get_handlers( 'PerlHandler' );
unshift @{$h},\&checkUser ; # do &checkUser first
$r->set_handlers( PerlHandler => $h );
} else {
# no ticket, no username -- so ask for login
$r->log->debug('My::Access::handler needs login
(PerlHandler=>ask_login())');
$r->set_handlers( PerlHandler => [ \&ask_login ] );
}
}
return OK;
}
sub logging_in { #exists, but not as code?
...
}
sub needs_login { #exists, but not as code?
...
}
sub ask_login { #exists, but not as code?
...
}
sub make_login { # doesn't exist at all???
...
}
sub checkUser { #exists, but not as code?
...
}
sub make_welcome { # doesn't exist at all???
...
}
sub need_cookies { # doesn't exist at all???
...
}
1;
__END__
###########################################
and here's the resulting log output, which gives my mind a
temporal inversion tachyon matrix pulse*:
###########################################
[Thu May 3 00:09:04 2001] [notice] Apache/1.3.9 configured -- resuming normal
operations
[Thu May 3 00:09:04 2001] [notice] suEXEC mechanism enabled (wrapper:
/usr/lib/apache/suexec)
[Thu May 3 00:09:05 2001] [debug] /usr/local/lib/site_perl/My/Access.pm(52): [client
208.33.90.85] My::Access::handler --
BEGIN
SCALAR
OK
SCALAR
CODE
SERVER_ERROR
SCALAR
CODE
ask_login
SCALAR
checkUser
SCALAR
handler
SCALAR
CODE
logging_in
SCALAR
needs_login
SCALAR
[Thu May 3 00:09:05 2001] [error] Undefined subroutine &My::Access::needs_login
called at /usr/local/lib/site_perl/My/Access.pm line 55.
where's make_login? make_welcome? need_cookies? hmm? aaugh!
if it was a non-terminated string or something of that nature 1)
the perl tokenizer would object and 2) it would then be "all are
screwy from line X on downward" which ain't the case (checkUser
seems to show up on the radar, and it comes after make_login,
which is nowhere to be seen).
###########################################
*star trek speak for "i have no *#$! idea what's happening here."
any wild-ass guesses would be appreciated. (do i win a prize for
the most difficulty with a simple situation? or at least an
honorable mention for most belligerent refusal to move on and get
a life?)
###########################################
short version--
WTF?
--
[EMAIL PROTECTED]
http://sourceforge.net/projects/newbiedoc -- we need your brain!
http://www.dontUthink.com/ -- your brain needs us!