This code didn't run. I don't think we can put an "if" clause inside
$type->SUPER::new(...) The error I got when running this code is: syntax error at /XXX/YYY3.pm line 74, near "if"\nsyntax error at /XXX/YYY3.pm line 77, near "} else"\nsyntax error at /XXX/YYY3.pm line 82, near " Luke Lu さんは��きました: > Hi, > In this part: > foreach $h (@{$hosts}) > { > $obj = $type->SUPER::new(PeerAddr => ($h), > PeerPort => 110, > Proto => 'tcp', > LocalPort => 110, > Timeout => 120 > ) and last; > > } > You can debug it like this > foreach $h (@{$hosts}) > { > $obj = $type->SUPER::new(PeerAddr => ($h), > PeerPort => 110, > Proto => 'tcp', > LocalPort => 110, > Timeout => 120 > If (defined ($obj)) { > Print "ok"; > } > Else { > Print "bad"; > } > ) and last; > } > > According to this ,you can check it whether every time it will be 'ok' or not. > If the last time is output 'bad', then you can find the real reason > > If still have any question,please contact with me/ > > luke > > -----邮件原件----- > 发件人: Nguyen Vu Hung [mailto:[EMAIL PROTECTED] > 发送时间: 2007年8月16日 8:58 > 收件人: modperl@perl.apache.org > 主题: Class inheritance, and SUPER under mod_perl2 > > Hello all, > > I am quite new to Perl, mod_perl and mod_perl2 so please excuse me for > my questions. It my sounds noobish. > > In the code below, the class XXX:YYY3 inherits Net::Cmd, > IO::Socket::Inet, create an object $obj with the SUPER keyword. > > As far as I know, this code works well under Apache 1.3, Perl 5.6, > mod_perl 1.3. > > But in current environment which consists Apache 2.0.52, Perl 5.8, > mod_perl 2.0.3, $obj becomes undefined (!!) after it is called with SUPER. > > Anyone gets any clues? > > Here is the code: > > ------------------ > > package XXX::YYY3; > > @ISA = qw(Net::Cmd IO::Socket::INET); > > sub new > { > my $self = shift; > my $type = ref($self) || $self; > > my $hosts = "localhost"; > my $obj; > my @localport = (); > > my $h; > foreach $h (@{$hosts}) > { > $obj = $type->SUPER::new(PeerAddr => ($h), > PeerPort => 110, > Proto => 'tcp', > LocalPort => 110, > Timeout => 120 > ) and last; > } > > > # obj is undefined now. why? > unless ( defined $obj ) { > $sl->log_serror(__FILE__, __LINE__, Apache2::Const::LOG_ERR, > APR::Const::SUCCESS, "XXX:: undef obj! ERROR. "); > } > > # vuhung > # ref: http://www.perlmonks.org/?node_id=495975 > return undef > unless defined $obj; > > } > > > >