Yes, it was undefined even inside foreach.
You can see it above the debug lines on my code.
Luke Lu さんは?きました:
> Hi,
> the $obj is undefined everytime?
>
> -----邮件原件-----
> 发件人: Nguyen Vu Hung [mailto:suppressed
> 发送时间: 2007年8月16日 9:34
> 收件人: Luke Lu
> 抄送: suppressed
> 主题: Re: 答复: 答复: Class inheritance, and SUPER under mod_perl2
>
> Actually I did exactly what you told me yesterday and $obj was still
> undefined.
>
> Here is the code ( check if $obj is undefined inside foreach )
>
> ------------
> 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. so weird.
> unless ( defined $obj ) {
> $sl->log_serror(__FILE__, __LINE__, Apache2::Const::LOG_ERR,
> APR::Const::SUCCESS, "XXX:: undef obj! ERROR. ");
> }
> last;
> }
> --------------------
> Luke Lu さんは?きました:
>
>> Ok, so sorry,
>> You only put the print "..." inside the foreach.
>> Please try it.
>>
>> -----邮件原件-----
>> 发件人: Nguyen Vu Hung [mailto:suppressed
>> 发送时间: 2007年8月16日 9:24
>> 收件人: Luke Lu
>> 抄送: suppressed
>> 主题: Re: 答复: Class inheritance, and SUPER under mod_perl2
>>
>> 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:suppressed
>>> 发送时间: 2007年8月16日 8:58
>>> 收件人: suppressed
>>> 主题: 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;
>>>
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>
>
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.