in reply to Re: Strange problem with use
in thread Strange problem with use

The misspelling in the print statement doesn't make any difference. It's not parsed by perl, just a string output. Doesn't make any difference in program execution at all.

If it helps, I get the exact same error. Once I use Schedule::Cron, $Info comes back as undefined. Must be something that conflicts between those two modules.

The eval doesn't help, btw. I assume you put it in to help debug, but the problem is prior to these lines.

I'll keep trying things out, and let you know if I have any luck.

Update: It seems that use'ing Schedule::Cron sets $SIG{CHLD}. This seems to be interfering with the Ifconfig module. I'd say it's a bug in the ifconfig module, the Schedule::Cron module, or both -- but here's a workaround.

Save the old value of $SIG{CHLD}, then call Ifconfig, then restore $SIG{CHLD}. Or, get rid of the use line, and 'require' it below this call.

my $oldsigchld = $SIG{CHLD}; $SIG{CHLD} = 'DEFAULT'; # get info for all interfaces + my $Info = Net::Ifconfig::Wrapper::Ifconfig('list', '', '', ''); $SIG{CHLD} = $oldsigchld if(defined $oldsigchld);
or
# get info for all interfaces + my $Info = Net::Ifconfig::Wrapper::Ifconfig('list', '', '', ''); require Schedule::Cron;
If I do either of those things, it works fine. ;-)

~J

Replies are listed 'Best First'.
Re: Re: Re: Strange problem with use
by beavis69 (Initiate) on Oct 17, 2003 at 19:17 UTC
    Thanks, Think you've got it !
    I'd the same problem without the Net::Ifconfig::Wrapper if i use :
    sub getifip { my $ip = '0.0.0.0'; open(README,"/sbin/ifconfig $_[0] 2>&1 |"); while (<README>) { if ( /ad\w*:(\d+\.\d+\.\d+\.\d+)\s.*/ ) {$ip=$1} } close(README); #&slog("$_[0] has ip $ip","getifip"); return $ip; }
    i had the same problem in a program that forks. So i think bug is definitely in the Schedule::Cron module
    I'll try your workaround.
    Thanks a lot.
    Regards
    Beav
      So finally, to avoid Schedule::CRon to install his REAPER wich prevent ifconfig to run, i use require Schedule::Cron in a child and ifconfig in another, so that each has his own SIG{CHLD} handler.
      works great...
      thanks all