Re: [PERL] Wierd perl error
Hej
Jeg har nu prøvet en masse forskellige ting, her er mit simpleste test
program. Programmet virker hvis indholdet af sub XXSessionInit fjernes !!!!
Der er tydeligvis noget jeg ikke forstaar, hvordan kan en subrutine der ikke
kaldes have denne effekt ????
Jeg har testet med CGI::Session::File og det ser ud til at virke fint.
Det ville vaere rart at vide om andre faar samme fejl.
Program og error er nedenfor :
#!/pack/collect/bin/perl -T -w
use strict;
use DBI;
use CGI::Session::MySQL;
my $Sessiondbh = OpenDB('PlitSessions','xx','yy');
my $session = new CGI::Session::MySQL(undef, {
Handle => $Sessiondbh,
})
or die $CGI::Session::errstr;
sub OpenDB {
my ($DbName, $DbUser, $DbPas) = @_;
my $dbh = DBI->connect("DBI:mysql:$DbName", $DbUser, $DbPas
, { PrintError => 1, RaiseError => 1, AutoCommit => 1 }) ||
die "Could not open DB, $DbName, $DbUser, $DbPas: $!";
return $dbh;
}
sub XXSessionInit {
$session->param("~logged-in");
}
Dette program failer med denne error :
sslug@sslug cgi-bin]$ ./gangwarTEST.pl
Use of uninitialized value in numeric eq (==) at
/usr/lib/perl5/site_perl/5.6.1/CGI/Session/MySQL.pm line 35 during
global destruction (#1)
(W uninitialized) An undefined value was used as if it were already
defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables.
To help you figure out what was undefined, perl tells you what operation
you used the undefined value in. Note, however, that perl optimizes
your
program and the operation displayed in the warning may not necessarily
appear literally in your program. For example, "that $foo" is
usually optimized into "that " . $foo, and the warning will refer to
the concatenation (.) operator, even though there is no . in your
program.
Use of uninitialized value in concatenation (.) or string at
/usr/lib/perl5/site_perl/5.6.1/CGI/Session/MySQL.pm line 36 during
global destruction (#1)
(in cleanup) Uncaught exception from user code:
Can't call method "FETCH" on an undefined value at
/usr/lib/perl5/site_perl/5.6.1/CGI/Session/MySQL.pm line 103 during global
destruction.
CGI::Session::MySQL::teardown('CGI::Session::MySQL=HASH(0x81793bc)')
called at /usr/lib/perl5/site_perl/5.6.1/CGI/Session.pm line 123
CGI::Session::DESTROY('CGI::Session::MySQL=HASH(0x81793bc)') called
at ./gangwarTEST.pl line 0
eval {...} called at ./gangwarTEST.pl line 0
sslug@sslug cgi-bin]$
Peter
"Peter Makholm" <sslug@sslug> wrote in message
news:sslug@sslug
> "Peter Lindstrøm" <sslug@sslug> writes:
>
> > Use of uninitialized value in join or string at
> > /usr/lib/perl5/site_perl/5.6.0/i386-linux/DBI.pm line 387 during
> > global destruction (#1)
>
> [...]
>
> > DBI::connect('DBI', undef, undef, undef, 'HASH(0x8472ef0)')
called
> > at /usr/lib/perl5/site_perl/5.6.1/CGI/Session/MySQL.pm line 131
>
> Ok, der er to oplysninger. Der er noget der ikke er initialiseret (læs
> undefined) og problemet er CGI::Session::MySQL
>
> > my $Sessiondbh = Plit::Mysql::OpenDB('PlitSessions','YY','XX');
> > my $Admindbh = Plit::Mysql::OpenDB('AdminGangWar','YY','XX');
>
> [...]
>
> > my $sid = $cgi->cookie('PLITGANGWARSID') || undef;
> > my $session = new CGI::Session::MySQL($sid, {
> > Handle => $Sessiondbh,
> > })
> > or die $CGI::Session::errstr;
>
> Dette er det eneste sted hvor du giver data til
> CGI::Session::MySQL. Har du tjekket at $Sessiondbh er defineret?
>
> Prøv at tjekke resultatet af Plit::Mysql::OpenDB i ovenstående to
> linjer.
>
> --
> SSLUGs julekalender - hver dag fra den 1. til den 24. december
> http://www.sslug.dk/julekalender/
>
 |
 |
 |
| |
|
|
 |
| |
|
Henvendelse vedrørende websiderne til <www_admin>.
|
Senest ændret
2005-08-10, klokken 19:55
Denne side vedligeholdes af
MHonArc
.
|
|
|
 |
 |
 |